Java中BasicNameValuePair的使用

韓師學子--胖佳發表於2019-04-05

                      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>

相關文章