为什么80%的码农都做不了架构师?>>>   

使用HTTPClient进行操作,可以忽略SSL

/*** @author Kai* @Date 2015-7-28 19:47:16*/
public class HTTPClient {//HTTP请求读取超时时间private static final int SOCKET_TIME_OUT = 5000;//HTTP请求连接时间private static final int CONNECT_TIME_OUT = 5000;//请求重试次数private static final int RETRY_TIMES = 3;/*** * @param address 请求地址* @param method  请求方式* @param params 请求参数* @param paramSendType 发送类型* @param cookies 设置cookies值发送* @return */public String request(String address, String method, String params, String paramSendType, String cookies) {address = address.trim();CloseableHttpResponse closeableHttpResponse = null;if (SupportProtocol.HTTP_METHOD_GET.equalsIgnoreCase(method)) {closeableHttpResponse = this.GET(address, params, paramSendType, cookies);} else if (SupportProtocol.HTTP_METHOD_POST.equalsIgnoreCase(method)) {closeableHttpResponse = this.POST(address, params, paramSendType, cookies);} else if (SupportProtocol.HTTP_METHOD_PUT.equalsIgnoreCase(method)) {closeableHttpResponse = this.PUT(address, params, paramSendType, cookies);} else {closeableHttpResponse = this.POST(address, params, paramSendType, cookies);}return this.buildReponseMsg(closeableHttpResponse);}private CloseableHttpResponse PUT(String address, String params, String paramSendType, String cookies) {try {URI uri = URI.create(address);HttpPut httpPut = new HttpPut(uri);RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIME_OUT).setConnectTimeout(CONNECT_TIME_OUT).build();httpPut.setConfig(requestConfig);if (SupportProtocol.SUPPORT_JSON.equalsIgnoreCase(paramSendType)) {httpPut.setHeader("Content-Type", "application/json; charset=UTF-8");StringEntity entity = new StringEntity(params, ContentType.APPLICATION_JSON);httpPut.setEntity(entity);} else if (SupportProtocol.SUPPORT_JSON.equalsIgnoreCase(paramSendType)) {httpPut.setHeader("Content-Type", "application/xml; charset=UTF-8");StringEntity entity = new StringEntity(params, ContentType.APPLICATION_XML);httpPut.setEntity(entity);} else {httpPut.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");StringEntity entity = new StringEntity(params, ContentType.APPLICATION_FORM_URLENCODED);httpPut.setEntity(entity);}if (StrUtil.isNotEmpty(cookies)) {httpPut.setHeader("Cookie", cookies);}CloseableHttpClient httpClient = HttpClients.createDefault();if (address.toLowerCase().startsWith("https")) {httpClient = this.createSSLClientDefault();}return httpClient.execute(httpPut);} catch (Exception ex) {LogUtil.error(ex);}return null;}private CloseableHttpResponse GET(String address, String params, String paramSendType, String cookies) {try {URI uri;if (EmptyUtil.isNotEmpty(params)) {uri = URI.create(String.format("%s?%s", address, params));} else {uri = URI.create(address);}HttpGet httpGet = new HttpGet(uri);RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIME_OUT).setConnectTimeout(CONNECT_TIME_OUT).build();httpGet.setConfig(requestConfig);if (SupportProtocol.SUPPORT_JSON.equalsIgnoreCase(paramSendType)) {httpGet.setHeader("Content-Type", "application/json; charset=UTF-8");} else if (SupportProtocol.SUPPORT_XML.equalsIgnoreCase(paramSendType)) {httpGet.setHeader("Content-Type", "application/xml; charset=UTF-8");} else {httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");}if (StrUtil.isNotEmpty(cookies)) {httpGet.setHeader("Cookie", cookies);}CloseableHttpClient httpClient = HttpClients.createDefault();if (address.toLowerCase().startsWith("https")) {httpClient = this.createSSLClientDefault();}return httpClient.execute(httpGet);} catch (Exception ex) {LogUtil.error(ex);}return null;}private CloseableHttpResponse POST(String address, String params, String paramSendType, String cookies) {try {URI uri = URI.create(address);HttpPost httpPost = new HttpPost(uri);RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIME_OUT).setConnectTimeout(CONNECT_TIME_OUT).build();httpPost.setConfig(requestConfig);if (SupportProtocol.SUPPORT_JSON.equalsIgnoreCase(paramSendType)) {httpPost.setHeader("Content-Type", "application/json; charset=UTF-8");StringEntity entity = new StringEntity(params, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);} else if (SupportProtocol.SUPPORT_XML.equalsIgnoreCase(paramSendType)) {httpPost.setHeader("Content-Type", "application/xml; charset=UTF-8");StringEntity entity = new StringEntity(params, ContentType.APPLICATION_XML);httpPost.setEntity(entity);} else {httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");StringEntity entity = new StringEntity(params, ContentType.APPLICATION_FORM_URLENCODED);httpPost.setEntity(entity);}if (StrUtil.isNotEmpty(cookies)) {httpPost.setHeader("Cookie", cookies);}CloseableHttpClient httpClient = HttpClients.createDefault();if (address.toLowerCase().startsWith("https")) {httpClient = this.createSSLClientDefault();}return httpClient.execute(httpPost);} catch (Exception ex) {LogUtil.error(ex);}return null;}private CloseableHttpClient createSSLClientDefault() {try {SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {@Overridepublic boolean isTrusted(X509Certificate[] chain,String authType) throws CertificateException {return true;}}).build();SSLSocketFactory ssf = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);return HttpClients.custom().setSSLSocketFactory(ssf).build();} catch (Exception e) {LogUtil.error(e.getMessage());}return HttpClients.createDefault();}private String buildReponseMsg(CloseableHttpResponse closeableHttpResponse) {if (closeableHttpResponse == null) {return null;}try {int code = closeableHttpResponse.getStatusLine().getStatusCode();String msg = EntityUtils.toString(closeableHttpResponse.getEntity());if (code == HttpStatus.SC_OK) {return msg;}} catch (Exception ex) {LogUtil.error(ex);}return null;}
}

使用URLConnection读取数据,访问HTTPS貌似有问题

package com.k.ctc.http;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;/**** @author Kai*/
public class Connector {public String GET(String address, Map<String, String> params) throws Exception {String param = this.buildParams(params);URL url = new URL(address + "?" + param);URLConnection conn = url.openConnection();return this.readData(conn);}public String GET(String address, String params) throws Exception {URL url = new URL(address + "?" + params);URLConnection conn = url.openConnection();return this.readData(conn);}public String POST(String address, Map<String, String> params) throws Exception {String param = this.buildParams(params);URL url = new URL(address);URLConnection conn = url.openConnection();this.postData(conn, param);return this.readData(conn);}public String POST(String address, String param) throws Exception {URL url = new URL(address);URLConnection conn = url.openConnection();this.postData(conn, param);return this.readData(conn);}private String buildParams(Map<String, String> params) throws UnsupportedEncodingException {StringBuilder sb = new StringBuilder();for (Map.Entry<String, String> param : params.entrySet()) {sb.append(param.getKey()).append("=");sb.append(URLEncoder.encode(param.getValue(), "UTF-8"));sb.append("&");}return sb.toString();}private void postData(final URLConnection conn, String requestData) throws Exception {conn.setDoOutput(true);OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());wr.write(requestData);wr.flush();wr.close();}private String readData(final URLConnection conn) throws Exception {String responseData = "";BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = rd.readLine()) != null) {responseData += line;}responseData = new String(responseData.getBytes(), "UTF-8");rd.close();return responseData;}
}

做个代码记录 Maven引用

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.4</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore-nio</artifactId><version>4.4</version>
</dependency>

转载于:https://my.oschina.net/Kxvz/blog/599039

关于Java去连接HTTP地址的操作相关推荐

  1. Java语言连接MongoDB常用的方法

    MongoDB是我们常用的非关系型数据库之一,今天我们了解一下如何使用Java去连接使用MongoDB. 1.导入MongoDB驱动包 2.获取Mongo连接对象 MongoClient mc = n ...

  2. java ip地址相关操作

    java ip地址相关操作 @(JAVA)[scala] 参考CORE JAVA. 在JAVA中,InetAddress类用于操作与IP地址相关的内容,常用方法如下: java.net.InetAdd ...

  3. IDEA中使用Java语言连接MySQL,实现增、删、查操作

    IDEA中使用Java语言连接MySQL,实现增.删.查操作 连接条件 想要连接MySQL数据库首先需要一个mysql-connector-java-8.0.25.jar包 [官网下载](MySQL ...

  4. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  5. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  6. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  7. Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例

    学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...

  8. Java hdfs连接池_Java使用连接池管理Hdfs连接

    记录一下Java API 连接hadoop操作hdfs的实现流程(使用连接池管理). 以前做过这方面的开发,本来以为不会有什么问题,但是做的还是坑坑巴巴,内心有些懊恼,记录下这烦人的过程,警示自己切莫 ...

  9. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作

    Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

最新文章

  1. MAC上最好用的免费全能音乐播放器VOX 2.6.5
  2. P3708-koishi的数学题【差分】
  3. python使用-Pyhton 单行、多行注释符号使用方法及规范
  4. 学习数学到底有什么用?
  5. Vim编辑器常用命令
  6. BiliBili下载助手
  7. 深入理解Java-GC机制
  8. Overleaf使用技巧 (latex公式,latex表格,latex图片排版)
  9. 能切换双显卡的android,安卓模拟器如何把双显卡切换成高性能显卡
  10. php 采集qq空间,php批量抓取QQ空间相册链接
  11. TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST)
  12. C# 颜色和名称对照表
  13. 生产服务器变慢了排查思路
  14. 解决Incorrect result size: expected 1, actual 0!
  15. 少女枪战怎么用电脑玩 少女枪战模拟器玩法教程
  16. 《趣谈网络协议》学习笔记DAY10
  17. 在线等价类与离线等价类(概念)
  18. ppt模板员工管理系统c语言,[PPT模板]第01章c语言.ppt
  19. 传统医学师承和确有专长人员医师资格考核考试办法在全国全面实施
  20. emc CX存储更换硬盘过程

热门文章

  1. Go中线程和协程的区别
  2. sparkstreaming监听hdfs目录如何终止_Spark笔试题:Spark Streaming 反压机制
  3. android 地图相册,时光地图相册
  4. mysql+数据库连接标识_新人必看!连接到MySQL数据库的两种方法
  5. 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)
  6. 查询数据库中的表结构信息
  7. [Google Guava] 8-区间
  8. 深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)
  9. jqGrid使用整理
  10. 为何你叫妹子笑,却拍出无数黑照?