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),我们将第一时间核实后及时予以删除。