httpclient通过get、post两种方式提交参数时,get方式也可通过UrlEncodedFormEntity进行参数拼接之后,再转换成String,在进行get请求时拼接上之前转换的String即可。post通过setEntity直接提交请求参数。
package com.lykion.Appliction; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; /** * 下面实例是网站安全检测接口调用示例 * @author Uker * */ public class lykionHttpClientSubmitParams { public static void main(String[] args) { // String url = "http://apis.juhe.cn/webscan/?domain=juhe.cn&key=e8653d8956536b7ee9fdc538be7bb707"; // String url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"; // String url = "http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=关键字&bk_length=600"; String url = "http://baike.baidu.com/api/openapi/BaikeLemmaCardApi"; String str = null; CloseableHttpClient httpClient = HttpClients.createDefault(); /** * 通过GET请求方式提交参数 */ List<NameValuePair> param = new ArrayList<NameValuePair>(); param.add(new BasicNameValuePair("scope", "103")); param.add(new BasicNameValuePair("format", "json")); param.add(new BasicNameValuePair("appid", "379020")); param.add(new BasicNameValuePair("bk_key", "马化腾")); param.add(new BasicNameValuePair("bk_length", "600")); // param.add(new BasicNameValuePair("key", "appkey")); try { UrlEncodedFormEntity entity = new UrlEncodedFormEntity(param, "UTF-8"); //拼接参数 str = EntityUtils.toString(entity); //将拼接好的参数通过EntityUtils.toString方法转换成String类型 System.out.println("------------------------------------------------------"); System.out.println(str); System.out.println("------------------------------------------------------"); HttpGet get = new HttpGet(url + "?" + str); //将参数拼接到目标url System.out.println("目标地址:" + get.getURI()); //打印目标地址 System.out.println("------------------------------------------------------"); CloseableHttpResponse response = httpClient.execute(get); HttpEntity entity2 = response.getEntity(); //获取响应实体 System.out.println(convert(EntityUtils.toString(entity2))); //调用convert方法,将Unicode编码转换成中文输出 // System.out.println("返回消息:" + EntityUtils.toString(entity2)); //将响应实体转换成soString再打印 // System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); /** * 下面表示POST请求提交参数的方式 */ // HttpPost post = new HttpPost(url); // post.setEntity(entity);
// CloseableHttpResponse response = httpClient.execute(post) } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { //关闭连接,释放资源 httpClient.close(); } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } } } /** * 以下方法是将Unicode编码转换成中文 * @param utfString * @return */ public static String convert(String utfString){ StringBuilder sb = new StringBuilder(); int i = -1; int pos = 0; while((i=utfString.indexOf("\\u", pos)) != -1){ sb.append(utfString.substring(pos, i)); if(i+5 < utfString.length()){ pos = i+6; sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16)); } } return sb.toString(); } }