使用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() {
- @Override
- public 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>
复制代码
来自: http://my.oschina.net/Kxvz/blog/599039 |