Java实现Http工具类的封装操作示例
作者:记忆沉思 发布时间:2021-08-14 10:27:57
标签:Java,Http,工具类
本文实例讲述了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


猜你喜欢
- 本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法。分享给大家供大家参考。具体如下:在生成PDF 的时候,虽然可以
- 由于springboot常用war包部署,改为cloud开发模式多端口情况下,部署反而不习惯毕竟,war包要不要项目名访问都必须放在tomc
- 一、项目简述本系统主要实现的功能有:社区疫情流动人员管理系统,住户管理,出入管理,访客管理,体温录入,高风险警示等等。二、项目运行环境配置:
- 目录Maven依赖配置示例Maven依赖要开始使用咖啡因Caffeine和Spring Boot,我们首先添加spring-boot-sta
- 一、前言Hello,又见面了,今天分享如何使用Unity制作计算器,难度中等,可以用来学习,或者当成其他项目的小组件导入。当然,也可以导出来
- Android Studio软件下载地址如下:下载:http://www.android-studio.org/index.php/down
- 整理文档,搜刮出一个java实现向有序数组中插入一个元素,稍微整理精简一下做下分享package cn.jbit.array; import
- ijkPlayer 编译全格式支持 .so库基本步骤拉取docker镜像//命令行执行如下命令即可 docker pull adajqd/i
- 如何在冗长的监控录像中找到关键点?我们知道,监控录像中大部分信息都是没用的,那些信息就等同于一幅静态图像。我们要等待监控的范围内出现异常情况
- Springboot2.x的session和cookie有效期session和cookie的相关区别和联系就不介绍了,这里就记录一下笔记。背
- 目录1、this代表了()的对象引用,super表示的是当前对象的()对象?2、输出内容是:3、下面程序的输出是:()4、执行下列代码的输出
- 使用Vibrator的vibrate()可调节震动时间;cancel()取消震动。 <!—震动权限--><use
- 导入mybatis jar包右键pom.xml模拟springboot底层实现类1.定义接口@Mapperpublic interface
- 本文实例讲述了C#画笔使用复合数组绘制单个矩形的方法。分享给大家供大家参考。具体实现方法如下:using System;using Syst
- 时间戳转换:/// <summary>/// C#时间格式转换为时间戳(互转)/// 时间戳定义为从格林威治时间 1970年01
- Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证
- 在 Android 系统中,一般使用 AudioRecord 或者 MediaRecord 来采集音频。AudioRecord 是一个比较偏
- 前言在java生态圈谈到Rpc,很多人可能就会想到Dubbo、Motan、Grpc等框架。但是你知道吗?作为Java编程全家桶的Spring
- 前言: 项目有个音乐播发器功能,实现音乐在线播放,同时需要带有歌词显示功能。网上也找过,在github找到勉强能用的控件,只是效果还是差强人
- View的简单理解和实例1.View的基本概念在Activity显示的控件 都叫做View(View类 是所有的控件类的父类 比