HttpClient中GET、POST方法示例,支持 https
2017-02-06 11:57
363 查看
HttpClient中GET、POST方法示例,支持 HTTPS
import java.io.IOException; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import net.sf.json.JSONObject; public class HttpUtil { public static String connectUrlNotCheckSsl(String url, String requestMethod, JSONObject param) throws RuntimeException, GeneralSecurityException, IOException { if (StringUtil.isNull(url)){ throw new RuntimeException("请求地址不能为空!"); } if (url.endsWith("/") || url.endsWith("?") || url.endsWith("&")) { url = url.substring(0, url.length() - 1); } if (url.length() <= 4) { url = "http://" + url; } if (!"http".equalsIgnoreCase(url.substring(0, 4))) { url = "http://" + url; } HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); httpParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8"); httpParams.setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"); HttpClient httpClient = null; if ("http:".equalsIgnoreCase(url.substring(0, 5))) { httpClient = new DefaultHttpClient(httpParams); } else { httpClient = new SSLDefaultHttpClient(httpParams); } HttpResponse httpResponse = null; if (StringUtil.isNotNull(requestMethod) && "post".equalsIgnoreCase(requestMethod)) { //post请求 HttpPost httpPost = new HttpPost(url); if (param != null && !param.isEmpty()) { List<NameValuePair> postParam = new ArrayList<NameValuePair>(); Iterator<?> it = param.keys(); while (it.hasNext()) { String key = (String) it.next(); String value = param.getString(key); postParam.add(new BasicNameValuePair(key, value)); } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParam, "UTF-8"); httpPost.setEntity(entity); } httpResponse = httpClient.execute(httpPost); } else { //get请求 if (param != null && !param.isEmpty()) { StringBuffer sb = new StringBuffer(); Iterator<?> it = param.keys(); while (it.hasNext()) { String key = (String) it.next(); String value = param.getString(key); if (sb.length() <= 0) { sb.append("?"); } else { sb.append("&"); } sb.append(key).append("=").append(value); } url += sb.toString(); } HttpGet httpGet = new HttpGet(url); httpResponse = httpClient.execute(httpGet); } int responseCode = httpResponse.getStatusLine().getStatusCode(); if (responseCode != HttpStatus.SC_OK){ throw new RuntimeException("请求响应失败,响应码:" + responseCode + "!"); } HttpEntity httpEntity = httpResponse.getEntity(); return (httpEntity == null) ? null : EntityUtils.toString(httpEntity, "UTF-8"); } } import java.security.GeneralSecurityException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpParams; public class SSLDefaultHttpClient extends DefaultHttpClient { public SSLDefaultHttpClient(HttpParams httpParams) throws GeneralSecurityException { super(httpParams); SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); } }
相关文章推荐
- 支持post,get请求(http,https)的HttpClientUtils
- java封装httpClient工具(支持http和https,包含get和post请求)
- https协议支持get/post方法
- Ajax跨域访问代理类,支持GET和POST方法
- 使用HttpClient进行http post/get方法的调用,以及使用dom4j解析xml
- Jquery Ajax示例---load,get,post方法
- android利用httpclient实现post、get请求restful接口进行json和form表单数据提交等公共方法类
- 实用工具类 PageLoader,以get和post方法读取网页, 支持代理和cookie
- URLConnection的GET方法与POST方法,HttpClient的GET方法与POST方法
- php发送get、post请求的6种方法代码示例
- Android使用Httpclient网络请求,get,post方法
- jQuery AJAX get() 和 post() 方法示例讲解
- WebService支持Post和Get方法
- tornado的GET POST方法示例
- 使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据) (3)
- 使用HttpClient进行http post/get方法的调用,以及使用dom4j解析xml
- Windows平台利用wininet做的HTTP的GET和POST,支持HTTPS
- jQuery调用RESTful WCF示例代码(GET方法/POST方法)
- HttpClient 中的get, post使用示例
- HttpsUtil的get和post方法