# 目录
[TOC]
这里要说明的是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的时候你不用拼接参数,如下写即可:
```java
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这样写:
```java
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等方法都是如此。
**推荐阅读**
[请求各种类型的数据](http://doc.nohttp.net/222384)
[自定义请求JavaBean](http://doc.nohttp.net/222884)