发送数据/文件/json/表单

这里要说明的是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等方法都是如此。

推荐阅读
请求各种类型的数据
自定义请求JavaBean

文章导航