HttpGet与HttpPost添加参数
HttpGet添加参数
HttpGet是没有办法添加参数的,但是有时候访问的URI也包含参数,且参数较多,这时候,需要借助别的方法来添加参数。
1.直接使用字符串拼接
此方法直接是参数的拼接,不再介绍 。
2.使用URIBuilder方式添加参数
这里的URL不需要加问号?
URIBuilder uriBuilder = new URIBuilder(url);
List<NameValuePair> nvps = new ArrayList<>();
nvps.add(new BasicNameValuePair("param", ""));//参数
//可以加很多参数
uriBuilder.setParameters(nvps);
HttpGet httpGet = new HttpGet(uriBuilder.build());
//可以在httpGet 上添加header
httpClient.execute(httpGet);//CloseableHttpClient执行方法
这种方法添加的参数比较清晰。
HttpPost添加参数
1.直接使用字符串拼接
略
2.WebForm参数
使用List nvps添加参数
HttpPost httppost = new HttpPost(url);
List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>();
nvps.add(new BasicNameValuePair("__VIEWSTATE","参数值"));
//省略n个参数名和值
httppost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//可以在httpPost 上添加header
httpClient.execute(httppost);//CloseableHttpClient执行方法
3.JSON形式的参数
使用JSONObject形式来添加,JSONObject是com.alibaba.fastjson.JSONObject
HttpPost httpPost = new HttpPost(url);
//给httpPost添加header
JSONObject param = new JSONObject();
param.put("birthDates", new JSONArray());//添加参数
//json参数自己添加
httpPost.setEntity(new StringEntity(param.toString(), "UTF-8"));
httpClient.execute(httpPost);//CloseableHttpClient执行方法
总结
不管是哪种形式的参数,其本质仍然是字符串,所以只要把参数组装好都是可以的。