package
org.ssi.util;
import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.List;
import
net.sf.json.JSONArray;
import
org.apache.commons.lang.exception.ExceptionUtils;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
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.protocol.HTTP;
import
org.apache.http.util.EntityUtils;
public
class
APIHttpClient {
private
String apiURL =
""
;
private
Log logger = LogFactory.getLog(
this
.getClass());
private
static
final
String pattern =
"yyyy-MM-dd HH:mm:ss:SSS"
;
private
HttpClient httpClient =
null
;
private
HttpPost method =
null
;
private
long
startTime = 0L;
private
long
endTime = 0L;
private
int
status =
0
;
/**
* 接口地址
* @param url
*/
public
APIHttpClient(String url){
if
(url !=
null
)
{
this
.apiURL = url;
}
if
(apiURL !=
null
)
{
httpClient =
new
DefaultHttpClient();
method =
new
HttpPost(apiURL);
}
}
/**
* 调用 API
* @param parameters
* @return
*/
public
String post(String parameters)
{
String body =
null
;
logger.info(
"parameters:"
+ parameters);
if
(method !=
null
& parameters !=
null
&& !
""
.equals(parameters.trim()))
{
JSONArray jsonObject = JSONArray.fromObject(parameters);
logger.info(
"json:"
+ jsonObject.toString());
try
{
List<NameValuePair> params=
new
ArrayList<NameValuePair>();
params.add(
new
BasicNameValuePair(
"data"
,parameters));
method.setEntity(
new
UrlEncodedFormEntity(params,HTTP.UTF_8));
startTime = System.currentTimeMillis();
HttpResponse response=httpClient.execute(method);
endTime = System.currentTimeMillis();
int
statusCode = response.getStatusLine().getStatusCode();
logger.info(
"statusCode:"
+ statusCode);
logger.info(
"调用API 花费时间(单位:毫秒):"
+ (endTime - startTime));
if
(statusCode != HttpStatus.SC_OK){
logger.error(
"Method failed:"
+response.getStatusLine());
status =
1
;
}
body=EntityUtils.toString(response.getEntity());
}
catch
(IOException e){
logger.error(
"exception occurred!\n"
+ExceptionUtils.getFullStackTrace(e));
status =
3
;
}
finally
{
logger.info(
"调用接口状态:"
+ status);
}
}
return
body;
}
/**
* 0.成功 1.执行方法失败 2.协议错误 3.网络错误
* @return the status
*/
public
int
getStatus() {
return
status;
}
/**
* @param status the status to set
*/
public
void
setStatus(
int
status) {
this
.status = status;
}
/**
* @return the startTime
*/
public
long
getStartTime() {
return
startTime;
}
/**
* @return the endTime
*/
public
long
getEndTime() {
return
endTime;
}
}
相关推荐
2. **支持多种HTTP方法**:除了基本的GET和POST,HttpClient还支持PUT、DELETE、HEAD等HTTP方法,以及自定义方法,满足各种HTTP操作需求。 3. **HTTP协议支持**:HttpClient实现了HTTP/1.0和HTTP/1.1协议,支持...
《Apache Commons HttpClient 3.1详解》 Apache Commons HttpClient 是一个功能强大的Java库,专为实现客户端HTTP通信而设计。这个3.1版本是HttpClient的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够...
例如,通过PostMethod发送JSON数据到RESTful API,或使用GetMethod下载远程文件。 总结,Apache Commons HttpClient 3.0-rc4作为一个强大的HTTP客户端库,提供了丰富的功能和灵活性,是Java开发者进行HTTP通信的...
它提供了强大的HTTP客户端API,支持HTTP/1.1协议,包括GET、POST等方法,还能处理Cookie、重定向、HTTP连接管理等功能。HttpClient库广泛应用于网络爬虫、Web服务调用等场景。 2. **mysql-connector-java-5.0.8-bin...
2. **构建请求**:根据短信服务商的API文档,构造一个HTTP请求,如POST请求,包含短信接口的URL、所需的请求头(如Content-Type)和请求体(如JSON格式的短信内容和接收者信息)。 3. **编码数据**:使用Commons ...
1. **发送GET请求**:获取网页内容,如读取远程JSON或XML数据。 2. **发送POST请求**:提交表单数据,如登录、注册或上传文件。 3. **处理响应**:解析HTTP响应,提取所需信息,如状态码、响应头和主体内容。 4. **...
HttpClient提供了丰富的功能,如发起GET、POST等各种HTTP请求,处理响应,管理连接池,支持HTTPS,以及设置请求头和参数等。这个库在进行Web服务调用、爬虫或者需要与远程服务器交互的应用中尤为关键。HttpClient 4....
"json-lib"是一个与HttpClient相关的标签,表明这个压缩包可能还包括了处理JSON数据的库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务之间的数据传输。json-lib是一个Java库,...
1. **HTTP请求**:HTTPClient允许开发者构建各种类型的HTTP请求,如GET、POST、PUT、DELETE等。你可以设置请求头、携带请求体、添加查询参数,甚至定制更复杂的HTTP行为。 2. **连接管理**:HTTPClient包含一个连接...
在Java编程中,HTTPClient库被广泛用于执行HTTP请求,例如GET、POST等,以及处理响应。HTTPClient 4.5版本是其较新的一个稳定版本,对之前的版本进行了优化和改进,增强了性能和兼容性。 在使用HTTPClient 4.5时,...
例如,`HttpGet`、`HttpPost`等类可以直接用来发起GET和POST请求,而`HttpClient`类则负责管理连接和执行请求。 2. **灵活性**:HttpClient支持多种HTTP方法,包括PUT、DELETE、OPTIONS等,可以处理复杂的HTTP协议...
尽管HttpClient本身并不直接处理JSON解析,但与之配合的其他库如Jackson、Gson或org.json等,可以用来解析HttpClient获取的JSON响应。这些库能够将JSON字符串转换成Java对象,方便进一步的处理和操作。 使用...
"httpclient post json数据"这个主题就是关于如何使用C#的HttpClient类来向Web API发送POST请求,并且以JSON格式传输数据。下面将详细解释这一过程。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的...
发送 POST 请求并携带 JSON 数据: ```java HttpPost httpPost = new HttpPost("http://example.com"); StringEntity entity = new StringEntity("{\"key\":\"value\"}", ContentType.APPLICATION_JSON); ...
在这个场景中,我们关注的是如何使用HttpClient来发送POST请求并传输JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于API接口的数据传递。 首先,我们需要引入Apache HttpClient...
- RESTful API交互:通过HTTPClient库发起HTTP请求,与远程RESTful服务进行交互,获取或发送JSON格式的数据,这在微服务架构中很常见。 - JSON数据处理:利用JSON解析库,将接收到的JSON字符串转换为Java对象,或者...
Apache HttpClient是一个Java库,它提供了强大的HTTP协议客户端实现,支持从简单的GET请求到复杂的POST、PUT、DELETE等HTTP方法。Wink是Apache软件基金会的一个RESTful Web服务开发框架,它包括服务器端和客户端组件...
4. **强大的请求和响应处理**:支持 GET、POST、PUT、DELETE 等多种请求方法,以及丰富的头信息和请求体处理,包括文件上传、JSON 数据传递等。 5. **重试和恢复策略**:HttpClient 可以配置重试策略,自动处理常见...
5. **处理HTTP响应**:介绍如何获取和解析响应码、响应头和响应体,包括处理文本、XML、JSON等各种格式的数据。 6. **连接管理**:讲解如何设置连接超时、读写超时,以及连接池的配置和管理,以优化性能和资源利用...
3. **httpmime-4.3.1.jar**:扩展了HTTPClient,提供了对多媒体类型的处理,例如MIME编码和解析,这对于发送和接收带有附件或复杂内容类型(如JSON或XML)的HTTP请求是必需的。 4. **httpasyncclient-4.0.2.jar**...