Java实现Http工具类的封装操作示例

作者:记忆沉思 时间:2021-08-14 10:27:57 

本文实例讲述了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://blog.csdn.net/u012083681/article/details/17512271

标签:Java,Http,工具类
0
投稿

猜你喜欢

  • 深入理解Java8新特性之接口中的默认方法和静态方法

    2023-11-24 01:44:25
  • ReadWriteLock接口及其实现ReentrantReadWriteLock方法

    2023-11-24 01:46:52
  • 一篇文章带你了解JAVA结构化编程详情

    2022-01-15 13:06:34
  • Java函数式编程(十二):监控文件修改

    2022-08-11 10:21:01
  • JavaWeb登录界面登录失败在同一页面进行提示的解决

    2023-11-26 15:51:34
  • C#实现Base64处理的加密解密,编码解码示例

    2023-07-15 12:11:31
  • 关于SpringGateway调用服务 接受不到参数问题

    2023-08-31 13:05:00
  • java中fork-join的原理解析

    2023-12-13 08:49:16
  • Gradle:修改默认的Build配置文件名方式

    2023-11-28 20:18:01
  • 浅谈Java 继承接口同名函数问题

    2023-07-22 13:28:47
  • Mybatis中resultMap的Colum和property属性详解

    2023-09-16 11:17:33
  • C++实现softmax函数的面试经验

    2023-06-16 02:07:47
  • 深入分析JAVA流程控制语句

    2023-11-20 10:48:32
  • IDEA快速搭建spring boot项目教程(Spring initializr)

    2023-08-17 21:11:16
  • spring-mybatis获取mapper的四种方式汇总

    2023-11-23 06:24:39
  • java 进制转换实例详解

    2023-07-05 11:53:45
  • Java面试题冲刺第二十五天--并发编程3

    2023-09-11 04:40:10
  • Java读文件修改默认换行符的实现

    2023-11-29 08:24:32
  • java Disruptor构建高性能内存队列使用详解

    2022-02-03 00:41:14
  • SpringBoot redis分布式缓存实现过程解析

    2023-10-10 22:32:25
  • asp之家 软件编程 m.aspxhome.com