当前位置: 首页 >服务端 > Httpclient采用get方式

Httpclient采用get方式

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller@RequestMapping("client")public class HttpClient_Test {@RequestMapping(value="test",produces="application/json;charset=utf-8")//设置编码格式@ResponseBodypublic String client(String msg){	CloseableHttpClient createDefault = HttpClients.createDefault();//创建一个默认的HttpClients对象	ArrayList<NameValuePair> arrayList = new ArrayList<NameValuePair>();//NameValuePair(类)	arrayList.add(new BasicNameValuePair("city", msg));	//arrayList.add(new BasicNameValuePair("key","free"));	//arrayList.add(new BasicNameValuePair("appid","0"));//new BasiNameValuePair (BasicNameValuePair是存储键值对的类)		String	paramsStr ="";	try {		UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(arrayList,"UTF-8");//解决参数乱码问题		paramsStr =EntityUtils.toString(urlEncodedFormEntity); //将字符串转化为json数据  需要关闭流	} catch (ParseException e) {		// TODO Auto-generated catch block		e.printStackTrace();	} catch (UnsupportedEncodingException e) {		// TODO Auto-generated catch block		e.printStackTrace();	} catch (IOException e) {		// TODO Auto-generated catch block		e.printStackTrace();	}		HttpGet httpGet = new HttpGet("https://www.apiopen.top/weatherApi?city="+paramsStr); //创建一个get请求并发送参数		httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1;"			+ " Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");	httpGet.setHeader("Accept", "application/json");	  	httpGet.setHeader("Accept-Encoding", "gzip, deflate");	httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");//设置http头部信息	 RequestConfig config = RequestConfig.custom() //RequestConfig.Builder 配置器 ,我们可以通过custom获取一个新的Builder对象				.setConnectTimeout(30000)  		//设置链接超时的时间1秒钟				.setSocketTimeout(30000) 		//设置读取超时1秒钟				.build(); 						//RequestConfig静态方法  setProxy  设置代理	 httpGet.setConfig(config);//设置头部信息	 	 CloseableHttpResponse execute=null;//实例话对象赋值	 String jsonStr="";	 try {		 execute = createDefault.execute(httpGet);//执行HttpClient		 jsonStr=EntityUtils.toString(execute.getEntity(),"UTF-8");//转化json格式 并防止乱码	} catch (ClientProtocolException e) {		// TODO Auto-generated catch block		e.printStackTrace();	} catch (IOException e) {		// TODO Auto-generated catch block		e.printStackTrace();	}finally{		try {			createDefault.close();//关闭HttpClient			execute.close();//关闭执行			httpGet.abort();//销毁GET请求		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	 	retu jsonStr;}}

作者:白白效颦
来源链接:https://blog.csdn.net/aibaibaiyuan/article/details/90664525

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/112556.html

标签:HttpClient
分享给朋友:

“Httpclient采用get方式” 的相关文章

[Multimedia][TS]TS流的解析 2022年05月17日 20:41:26
[C++]VC自定义发IP包例子 2022年05月17日 20:41:27
[C#][控件]文本类控件 2022年05月17日 20:45:24
[C#][控件]常用控件命名规范 2022年05月17日 20:45:24
MySQL安装之yum安装 2022年05月19日 19:54:29
常用日志框架介绍 2022年05月19日 20:04:06
引用类型 2022年05月21日 11:41:30
概率论快速学习02:概率公理 2022年05月26日 21:02:52
Python快速学习09: 函数的参数 2022年05月28日 23:16:03