这里要说明的是NoHttp除了提交自定义Body
外,其它提交任何数据都是以Request#add(key, value)
的形式添加到Request
的,这是NoHttp为了方便开发者故意这么设计的。而且NoHttp提供了Request#add(Map)
这样的方法添加参数,还有其它小惊喜等待你去挖掘。
add()方法的特点说明
注意:NoHttp添加多个相同key的参数,不会被覆盖,会全部发送到服务器,但是允许在添加后通过Request#set(String...)
覆盖这个key下所有的参数,也可以通过Request#remove(String)
移除这个key下的所有参数。
GET提交普通参数
Http GET发送请求的时候,最终参数都会以url?key=value&key1=value1
这样的形式拼接在url末尾。
例如:
- url:
http://api.nohttp.net/upload?id=123&name=yanzhenjie&desc=abc
- method:
GET
用NoHttp的时候你不用拼接参数,如下写即可:
String url = "http://api.nohttp.net/upload";
Request<String> request = new StringRequest(url);
request.add("id", 123)
.add("name", "yanzhenjie")
.add("desc", "abc");
就是这么简单,剩下的事情NoHttp
会自动完成。
POST提交普通参数
Http POST发送请求的时候,不像GET一样,POST的url最终不会变的,参数也不会拼接到url后面,它的参数会拼接成key=value&key1=value
的形式用流写出去,也就是说它的参数是以body的形式发送的。
例如:
- ur:
http://api.nohttp.net/upload
- method
POST
- params:
name=yanzhenjie&pwd=12345
这些参数用nohttp这样写:
String url = "http://api.nohttp.net/upload";
Request<String> request = new StringRequest(url, RequestMethod.POST)
.add("id", 123)
.add("name", "yanzhenjie")
.add("desc", "abc");
和GET没什么需别,唯一的区别的就是指定了请求方法为POST。其它类似POST的请求,比如PUT、PATCH、DELETE等方法都是如此。