本文主要是介绍java实现Http工具类的封装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http工具类的实现:(通过apache包)第一个类
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;import com.gooagoo.stcu.utils.http.HttpClientUtils;public class HTTPRequest {private String errorMessage; // 錯誤信息/*** HTTP請求字符串資源* * @param url* URL地址* @return 字符串資源* */public String httpRequestString(String url) {String result = null;try {HttpEntity httpEntity = httpRequest(url);if (httpEntity != null) {result = EntityUtils.toString(httpEntity, "urf-8"); // 使用UTF-8編碼}} catch (IOException e) {errorMessage = e.getMessage();}return result;}/*** HTTP請求字節數組資源* * @param url* URL地址* @return 字節數組資源* */public byte[] httpRequestByteArray(String url) {byte[] result = null;try {HttpEntity httpEntity = httpRequest(url);if (httpEntity != null) {result = EntityUtils.toByteArray(httpEntity);}} catch (IOException e) {errorMessage = e.getMessage();}return result;}/*** 使用HTTP GET方式請求* * @param url* URL地址* @return HttpEntiry對象* */private HttpEntity httpRequest(String url) {HttpEntity result = null;try {HttpGet httpGet = new HttpGet(url);HttpClient httpClient = HttpClientUtils.getHttpClient();HttpResponse httpResponse;httpResponse = httpClient.execute(httpGet);int httpStatusCode = httpResponse.getStatusLine().getStatusCode();/** 判斷HTTP狀態碼是否為200*/if (httpStatusCode == HttpStatus.SC_OK) {result = httpResponse.getEntity();} else {errorMessage = "HTTP: " + httpStatusCode;}} catch (ClientProtocolException e) {errorMessage = e.getMessage();} catch (IOException e) {errorMessage = e.getMessage();}return result;}/*** 返回錯誤消息* * @return 錯誤信息* */public String getErrorMessage() {return this.errorMessage;}}
第二个类的实现:
package com.demo.http;import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.HttpConnectionParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;public class HttpClientUtils {private static final int REQUEST_TIMEOUT = 5 * 1000;// 设置请求超时10秒钟private static final int SO_TIMEOUT = 10 * 1000; // 设置等待数据超时时间10秒钟// static ParseXml parseXML = new ParseXml();// 初始化HttpClient,并设置超时public static HttpClient getHttpClient() {BasicHttpParams httpParams = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(httpParams, REQUEST_TIMEOUT);HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT);HttpClient client = new DefaultHttpClient(httpParams);return client;}public static boolean doPost(String url) throws Exception {HttpClient client = getHttpClient();HttpPost httppost = new HttpPost(url);HttpResponse response;response = client.execute(httppost);if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {return true;}client.getConnectionManager().shutdown();return false;}/*** 与远程交互的返回值post方式* * @param hashMap* @param url* @return*/public static String getHttpXml(HashMap<String, String> hashMap, String url) {String responseMsg = "";HttpPost request = new HttpPost(url);List<NameValuePair> params = new ArrayList<NameValuePair>();Iterator<Map.Entry<String, String>> iter = hashMap.entrySet().iterator();while (iter.hasNext()) {Entry<String, String> entry = iter.next();params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}try {request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));HttpClient client = HttpClientUtils.getHttpClient();HttpResponse response = client.execute(request);if (response.getStatusLine().getStatusCode() == 200) {responseMsg = EntityUtils.toString(response.getEntity());}} catch (UnknownHostException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return responseMsg;}/*** map转字符串 拼接参数* * @param hashMap* @return*/public static String mapToString(HashMap<String, String> hashMap) {String parameStr = "";Iterator<Map.Entry<String, String>> iter = hashMap.entrySet().iterator();while (iter.hasNext()) {Entry<String, String> entry = iter.next();parameStr += "&" + entry.getKey() + "=" + entry.getValue();}if (parameStr.contains("&")) {parameStr = parameStr.replaceFirst("&", "?");}return parameStr;}
}
这篇关于java实现Http工具类的封装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!