Java实现Http工具类的封装操作示例
发布时间:2020-05-23 19:13:48 所属栏目:Java 来源:互联网
导读:本文实例讲述了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; // e`信息
/**
* HTTP求字符串Y源
*
* @param url
* URL地址
* @return 字符串Y源
* */
public String httpRequestString(String url) {
String result = null;
try {
HttpEntity httpEntity = httpRequest(url);
if (httpEntity != null) {
result = EntityUtils.toString(httpEntity,"urf-8"); // 使用UTF-8a
}
} catch (IOException e) {
errorMessage = e.getMessage();
}
return result;
}
/**
* HTTP求字到MY源
*
* @param url
* URL地址
* @return 字到MY源
* */
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();
/*
* 判HTTPBa是否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;
}
/**
* 返回e`消息
*
* @return e`信息
* */
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> entry = iter.next();
parameStr += "&" + entry.getKey() + "=" + entry.getValue();
}
if (parameStr.contains("&")) {
parameStr = parameStr.replaceFirst("&","?");
}
return parameStr;
}
}
更多关于java相关内容感兴趣的读者可查看本站专题:《Java Socket编程技巧总结》、《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》 希望本文所述对大家java程序设计有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java 解压与压缩文件夹的实例详解
- 详解SpringBoot开发案例之整合定时任务(Scheduled)
- 如何正确使用Java 8 Optional可以有条件地返回值或抛出异常
- Java多线程基础 线程的等待与唤醒(wait、notify、notifyAll
- 如何使用spark-connector-api在where子句中设置blob列?
- jpa – ‘detach’和’remove’entityManager的方法之间的区
- Java事务管理学习之JDBC详解
- java – 面部检测不适用于前置摄像头
- Spring Boot 与 Kotlin 上传文件的示例代码
- 如何替换BndTools默认启动器并更改导出文件结构
