# 目錄
[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)