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>