java网络编程____httpclient工具类操作

来源:互联网 发布:猎豹浏览器精简优化版 编辑:程序博客网 时间:2024/06/05 20:10
package com.cctin.platform.wechatrss.utils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.ConnectException;import java.net.URL;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.util.EntityUtils;/** * @author Administrator * http工具类 */public class HttpClientUtil {/** * http post 提交 * @param url * @param params */public static void httpPost(String url,String params){//创建httpclient对象HttpClient httpClient = HttpClientBuilder.create().build();//创建POST请求方法HttpPost httpPost = new HttpPost(url);//创建请求报文头httpPost.addHeader("Content-Type", "text/plain; charset=UTF-8");//创建请求数据对象StringEntity entity = new StringEntity(params.toString(), "utf-8");//post请求装载数据httpPost.setEntity(entity);try {//执行http post请求HttpResponse httpResponse=httpClient.execute(httpPost);//判断执行是否成功if(httpResponse.getStatusLine().getStatusCode()==200){HttpEntity httpEntity=httpResponse.getEntity();String responseStr=EntityUtils.toString(httpEntity);System.out.println("responseStr_____:"+responseStr);}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/** * 发起https请求并获取结果 * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */public static String httpSRequest(String requestUrl, String requestMethod, String outputStr) {//JSONObject jsonObject = null;StringBuffer buffer = new StringBuffer();try {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { new SSlX509Manager() };SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, new java.security.SecureRandom());// 从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactory ssf = sslContext.getSocketFactory();URL url = new URL(requestUrl);HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();httpUrlConn.setSSLSocketFactory(ssf);httpUrlConn.setDoOutput(true);httpUrlConn.setDoInput(true);httpUrlConn.setUseCaches(false);// 设置请求方式(GET/POST)httpUrlConn.setRequestMethod(requestMethod);if ("GET".equalsIgnoreCase(requestMethod))httpUrlConn.connect();// 当有数据需要提交时if (null != outputStr) {OutputStream outputStream = httpUrlConn.getOutputStream();// 注意编码格式,防止中文乱码outputStream.write(outputStr.getBytes("UTF-8"));outputStream.close();}// 将返回的输入流转换成字符串InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}bufferedReader.close();inputStreamReader.close();// 释放资源inputStream.close();inputStream = null;httpUrlConn.disconnect();} catch (ConnectException ce) {ce.printStackTrace();} catch (Exception e) {e.printStackTrace();}return buffer.toString();}}

//

package com.cctin.platform.wechatrss.utils;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.X509TrustManager;public class SSlX509Manager implements X509TrustManager{@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}}


0 0
原创粉丝点击