https请求工具类

import java.io.IOException;import java.io.UnsupportedEncodingException;import java.lang.reflect.Field;import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;

import javax.net.ssl.SSLContext;import javax.net.ssl.SSLException;import javax.net.ssl.SSLSession;import javax.net.ssl.SSLSocket;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.scheme.Scheme;import org.apache.http.conn.ssl.SSLSocketFactory;import org.apache.http.conn.ssl.X509HostnameVerifier;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;

/** * Created by huangjy on 2016-11-10. */public class HttpsTools {

/**     * 发送HTTPS POST请求     *     * @param     * @return 返回响应值     */    public static String sendHttpsRequestByPost(String url, Map<String, String> params) {        String responseContent = null;        HttpClient httpClient = new DefaultHttpClient();        //创建TrustManager        X509TrustManager xtm = new X509TrustManager() {            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {            }

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {            }

public X509Certificate[] getAcceptedIssuers() {                return null;            }        };        //这个好像是HOST验证        X509HostnameVerifier hostnameVerifier = new X509HostnameVerifier() {            public boolean verify(String arg0, SSLSession arg1) {                return true;            }

public void verify(String arg0, SSLSocket arg1) throws IOException {            }

public void verify(String arg0, String[] arg1, String[] arg2) throws SSLException {            }

public void verify(String arg0, X509Certificate arg1) throws SSLException {            }        };        try {            //TLS1.0与SSL3.0基本上没有太大的差别,可粗略理解为TLS是SSL的继承者,但它们使用的是相同的SSLContext            SSLContext ctx = SSLContext.getInstance("TLS");            //使用TrustManager来初始化该上下文,TrustManager只是被SSL的Socket所使用            ctx.init(null, new TrustManager[]{xtm}, null);            //创建SSLSocketFactory            SSLSocketFactory socketFactory = new SSLSocketFactory(ctx);            socketFactory.setHostnameVerifier(hostnameVerifier);            //通过SchemeRegistry将SSLSocketFactory注册到我们的HttpClient上            httpClient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", socketFactory, 443));            HttpPost httpPost = new HttpPost(url);            List<NameValuePair> formParams = new ArrayList<NameValuePair>(); // 构建POST请求的表单参数            for (Map.Entry<String, String> entry : params.entrySet()) {                formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));            }            httpPost.setEntity(new UrlEncodedFormEntity(formParams, "UTF-8"));            HttpResponse response = httpClient.execute(httpPost);            HttpEntity entity = response.getEntity(); // 获取响应实体            if (entity != null) {                responseContent = EntityUtils.toString(entity, "UTF-8");            }        } catch (KeyManagementException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (ClientProtocolException e) {            e.printStackTrace();        } catch (ParseException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            // 关闭连接,释放资源            httpClient.getConnectionManager().shutdown();        }        return responseContent;    }

}
时间: 2024-08-06 12:55:24

https请求工具类的相关文章

我的Android进阶之旅------&gt;Android关于HttpsURLConnection一个忽略Https证书是否正确的Https请求工具类

下面是一个Android HttpsURLConnection忽略Https证书是否正确的Https请求工具类,不需要验证服务器端证书是否正确 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEn

Https通信工具类

记录一个在微信开发中用到的https通信工具类,以后会用到的. 用于https通信的证书信任管理器 import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.X509TrustManager; /** * 证书信任管理器(用于https请求) */ public class MyX509TrustManager implements

java jdk原生的http请求工具类

package com.base; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.Reader; import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.net

Https联网工具类

Https联网工具类 get  post 调用时 只需传入url,和要提交的参数queryString  有cookie时也可以传入 放回的是字符串 连接方式我在Http里解决了你们只需要拼接对 拼接格式 路径:https://emall.licaike.com/weixin/web/bind?        参数:loginInit=loginInit&knowChannel=APP_LCK_ADR_KC import java.io.ByteArrayOutputStream; import

iOS_21团购_通过block对请求工具类的代理方法进行二次封装

最终效果图: [点评]提供的工具类DPAPI 在请求完毕后,使用的是代理机制,当一次请求成功或者失败时,会调用代理的相应方法 为了将点评提供的工具类DPAPI进行二次封装, 再次定义了一个block: typedef  void(^RequestDoneCallBackBlock)(id deals,NSError *err); 该block有两个参数, 分别是成功时,服务器返回的deals字典数组 另一个参数是:请求失败时,服务器返回的失败信息 两个参数分别对应代理的两个方法(即成功.失败时分

Java http请求工具类

该工具类可以调用POST请求或者Get请求,参数以Map的方式传入,支持获获取返回值,返回值接收类型为String HttpRequestUtil.java package com.util; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.List;import java.ut

Java HttpClient4.2.x版本get、post请求工具类

公司业务需要,跟很多公司合作,经常需要请求外部http接口,而项目架构是一个比较老的框架整合,仅http请求的工具类就很多个,显得杂乱无章: 有些接口测试时,对方做了IP白名单限制的,ZIP压缩等要求,现有的http工具类无法满足要求,又不能去修改,因为很多地方在用:想引入最新HttpClient版本的依赖,确发现与现有的jar包冲突: 无耐只能使用现有的jar重新封装,具体代码演示如下: post请求方式1 /*** POST请求,超时时间必须设置* @param url* @param js

发送请求工具类

采用HttpClient与远程服务器通信,所以定义一个工具类对HttpClient进行封装getRequest():发送get请求postRequest():发送post请求 FutureTask(Callable<V> callable)  //创建一个 FutureTask,一旦运行就执行给定的 Callable. FutureTask(Runnable runnable, V result)   //创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时

网络请求工具类WebServiceUtils

如果对WebService一无所知的话,建议先看看这两篇博客,对你WebService很有帮助. http://blog.csdn.NET/eyu8874521/article/details/9125987 http://blog.csdn.net/xiaanming/article/details/16871117 本人也是菜鸟一名,WebService已经是很老的技术了,但现在仍有使用,刚开始接触的时候,是无从入手呀,看了上面几篇文章以后,渐渐的会使用了,这里感谢网上开源的作者和文章,网上