BasicNameValuePair實現(xiàn)了apache http的NameValuePair這個接口,關(guān)于接口NameValuePair的定義如下:
public interface NameValuePair {
String getName();
String getValue();
}
可以發(fā)現(xiàn)該接口中聲明了兩個方法,返回值均為String,也就是在利用
new BasicNameValuePair(String1,String2)
進行參數(shù)傳遞時,只能使用String這種類型進行傳遞读规,事實上表單提交的get和post只能傳遞String類型,所以如何傳遞非String類型的參數(shù),比如boolean,int修械。
easy,在傳遞之前將對應(yīng)的類型預(yù)先轉(zhuǎn)成String就行了,為何這樣可行呢,關(guān)鍵在于這一行
httpPost.setEntity(new UrlEncodedFormEntity(params));
這里放到http entity里面的類型都是字節(jié)類型检盼,HTTP協(xié)議與FTP肯污,SMTP類似都是通過plain-text ASCII來進行CS數(shù)據(jù)通信的(不像TCP使用二進制,有歷史原因吨枉,也更加節(jié)約帶寬和方便調(diào)試)蹦渣,實際上并不存在什么String,Boolean貌亭,Integer數(shù)據(jù)類型柬唯,都是通過將byte進行ASCII編碼來實現(xiàn)的,服務(wù)器端反序列化成String類型后圃庭,通過springMVC的框架進行解析锄奢,注意這里也需要區(qū)分提交方式,框架可能會選取適當(dāng)?shù)膆ttpMessageConverter進行解析(這個是服務(wù)器關(guān)注的事情了)