Java中BasicNameValuePair的使用
转载:https://blog.csdn.net/zdb292034/article/details/80663792
1.BasicNameValuePair通常是用来封装post请求中的参数名称和值;
public String httpPost(Map<String, String> requestParams, String urlEncode) {
HttpPost httpPost = null;
String resp = "";
try {
// 参数设置
List<NameValuePair> params = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> entry : requestParams.entrySet()) {
params.add(new BasicNameValuePair((String) entry.getKey(),
(String) entry.getValue()));
}
httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params, urlEncode));
HttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200)
{
return null;
}
HttpEntity httpEntity = response.getEntity();
resp = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (httpPost != null) {
httpPost.abort();
}
}
return resp;
}
UrlEncodedFormEntity的源码:
可以看出UrlEncodedFormEntity构造函数只接受List<? extends NameValuePair>为参数,所以不能使用map;
要想封装 post 请求的参数,只能使用 List<BasicNameValuePair>