在大多数q& a名称值对中,用于POST;
List<NameValuePair> myBooks = new ArrayList<NameValuePair>();
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(myBooks));
但是当我尝试将params更改为arrayList时,
完成
List<Books> myBooks
= //从另一个类“
我明白了:
The constructor UrlEncodedFormEntity(List<myBooks>) is undefined
如果没有Jackson lib,真的不可能发布List而不是ValuePair吗?
答案 0 :(得分:2)
如果查看the API,您可以看到该列表必须展开NameValuePair
。
所以你自己的类也需要扩展NameValuePair
类。
但为什么会这样呢?如果你看一下你提供的代码的第三行
httpPost.setEntity(new UrlEncodedFormEntity(myBooks));
这里重要的部分是注意UrlEncodedFormEntity
。
UrlEncoded数据将包含简单的名称和简单名称。价值对,像这样:
name=bob&age=20
如果您提供的列表已经包含带有值(NameValuePair
)的名称,那么您可以通过库为您完成此操作。
如果您只想发布仲裁数据,可以使用StringEntity自行完成。
httpPost.setEntity(new StringEntity(myString));
在任何情况下,请不要忘记将新的内容类型标题添加到您的POST!