依賴最下面的方法:
/**
* @Title:httpInterface
* @author:踏步
* @Description:TODO http訪問網絡
* @param url--HTTP請求地址
* @param paramsMap--請求參數Map
* @param method--HTTP請求方法:get或者post
* @param requestHeader--請求頭參數Map
* @return Map<String,Object>
*/
public static Map<String, Object> httpInterface(String url, Map<String, Object> paramsMap, String method,
Map<String, String> requestHeader) {
HttpGet get = null;// get訪問
HttpPost post = null;// post訪問
HttpResponse response = null;// 響應\
// http結果map
Map<String, Object> httpMap = new HashMap<String, Object>();
try {
httpMap.put("code", "succeed");
System.out.println("HTTP請求地址: " + url);
// 創建一個DefaultHttpClient的實例
DefaultHttpClient client = new DefaultHttpClient();
if (url.indexOf("HTTPS:") > -1) {
client = (DefaultHttpClient)WebClientDevWrapper.wrapClient(client);
}
// 設置連接超時時間,單位毫秒
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
// 等待結果超時時間,單位毫秒
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 20000);
if (method.equalsIgnoreCase("GET")) {
// get訪問
get = new HttpGet(url);
// 請求頭參數不為空時,設置請求頭
if (!QwyUtil.isNullAndEmpty(requestHeader)) {
for (String key : requestHeader.keySet()) {
get.setHeader(key, requestHeader.get(key));
}
}
response = client.execute(get);
} else {
// Post訪問;
post = new HttpPost(url);
// 請求頭參數不為空時,設置請求頭
if (!QwyUtil.isNullAndEmpty(requestHeader)) {
for (String key : requestHeader.keySet()) {
post.setHeader(key, requestHeader.get(key));
}
}
// 封裝參數
if (!isNullAndEmpty(paramsMap)) {
List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
Iterator<String> keys = paramsMap.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
params.add(new BasicNameValuePair(key, paramsMap.get(key).toString()));
}
HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
post.setEntity(entity);
}
response = client.execute(post);
}
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String str = EntityUtils.toString(response.getEntity(), "UTF-8");
JSONObject jsonObject = new JSONObject(str);
return jsonToMap(jsonObject);
} else {
httpMap.put("code", "fail");
httpMap.put("message", "http訪問異常:" + response.getStatusLine().toString());
System.out.println(response.getStatusLine().toString());
}
} catch (Exception e) {
httpMap.put("code", "fail");
httpMap.put("message", "http訪問異常!");
e.printStackTrace();
System.out.println(e.getMessage());
} finally {
return httpMap;
}
}
/**
* @Title:jsonToMap
* @author:踏步
* @Description:TODO 將json轉換成Map格式;
* @param json--JSONObject
* @return Map<String,Object>
*/
public static Map<String, Object> jsonToMap(JSONObject json) {
Map<String, Object> map = new HashMap<String, Object>();
try {
if (!isNullAndEmpty(json)) {
Iterator<String> iterator = json.keys();
while (iterator.hasNext()) {
String key = iterator.next();
map.put(key, json.get(key));
}
}
} catch (JSONException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
return map;
}
依賴此方法:
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
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;
/**
* 避免HttpClient的”SSLPeerUnverifiedException: peer not authenticated”異常
* 不用導入SSL證書
* @author shipengzhi(shipengzhi@sogou-inc.com)
*
*/
public class WebClientDevWrapper {
public static org.apache.http.client.HttpClient wrapClient(org.apache.http.client.HttpClient base) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
};
ctx.init(null, new TrustManager[] { tm }, null);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
registry.register(new Scheme("https", new EasySSLSocketFactory(), 9543));
ThreadSafeClientConnManager mgr = new ThreadSafeClientConnManager(base.getParams(),registry);
return new DefaultHttpClient(mgr, base.getParams());
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}