`

httpClient - post - json

 
阅读更多
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>(); 
                        //建立一个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;
                        }
                         
                            //Read the response body
                             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;
    }
}
 
分享到:
评论

相关推荐

    commons-httpclient-3.0.jar

    2. **支持多种HTTP方法**:除了基本的GET和POST,HttpClient还支持PUT、DELETE、HEAD等HTTP方法,以及自定义方法,满足各种HTTP操作需求。 3. **HTTP协议支持**:HttpClient实现了HTTP/1.0和HTTP/1.1协议,支持...

    commons-httpclient-3.1jar包

    《Apache Commons HttpClient 3.1详解》 Apache Commons HttpClient 是一个功能强大的Java库,专为实现客户端HTTP通信而设计。这个3.1版本是HttpClient的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够...

    commons-httpclient-3.0-rc4.rar

    例如,通过PostMethod发送JSON数据到RESTful API,或使用GetMethod下载远程文件。 总结,Apache Commons HttpClient 3.0-rc4作为一个强大的HTTP客户端库,提供了丰富的功能和灵活性,是Java开发者进行HTTP通信的...

    httpclient-4.4.jar mysql-connector-java-5.0.8-bin.jar等等

    它提供了强大的HTTP客户端API,支持HTTP/1.1协议,包括GET、POST等方法,还能处理Cookie、重定向、HTTP连接管理等功能。HttpClient库广泛应用于网络爬虫、Web服务调用等场景。 2. **mysql-connector-java-5.0.8-bin...

    commons-logging-1.1.1.jar,commons-httpclient-3.1.jar,commons-codec-1.4.jar

    2. **构建请求**:根据短信服务商的API文档,构造一个HTTP请求,如POST请求,包含短信接口的URL、所需的请求头(如Content-Type)和请求体(如JSON格式的短信内容和接收者信息)。 3. **编码数据**:使用Commons ...

    org.apache.commons.httpclient-3.1.jar

    1. **发送GET请求**:获取网页内容,如读取远程JSON或XML数据。 2. **发送POST请求**:提交表单数据,如登录、注册或上传文件。 3. **处理响应**:解析HTTP响应,提取所需信息,如状态码、响应头和主体内容。 4. **...

    fastjson-1.1.15.jar httpclient-4.1.3.jar httpcore-4.1.4.jar

    HttpClient提供了丰富的功能,如发起GET、POST等各种HTTP请求,处理响应,管理连接池,支持HTTPS,以及设置请求头和参数等。这个库在进行Web服务调用、爬虫或者需要与远程服务器交互的应用中尤为关键。HttpClient 4....

    HttpClient所需jar包(全) httpClient.4.13jar

    "json-lib"是一个与HttpClient相关的标签,表明这个压缩包可能还包括了处理JSON数据的库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务之间的数据传输。json-lib是一个Java库,...

    httpclient-4.5所需jar包.rar

    1. **HTTP请求**:HTTPClient允许开发者构建各种类型的HTTP请求,如GET、POST、PUT、DELETE等。你可以设置请求头、携带请求体、添加查询参数,甚至定制更复杂的HTTP行为。 2. **连接管理**:HTTPClient包含一个连接...

    httpclient-4.5所需jar包

    在Java编程中,HTTPClient库被广泛用于执行HTTP请求,例如GET、POST等,以及处理响应。HTTPClient 4.5版本是其较新的一个稳定版本,对之前的版本进行了优化和改进,增强了性能和兼容性。 在使用HTTPClient 4.5时,...

    HttpClient-4.5所需jar包.rar

    例如,`HttpGet`、`HttpPost`等类可以直接用来发起GET和POST请求,而`HttpClient`类则负责管理连接和执行请求。 2. **灵活性**:HttpClient支持多种HTTP方法,包括PUT、DELETE、OPTIONS等,可以处理复杂的HTTP协议...

    httpClient-jar包_json解析_

    尽管HttpClient本身并不直接处理JSON解析,但与之配合的其他库如Jackson、Gson或org.json等,可以用来解析HttpClient获取的JSON响应。这些库能够将JSON字符串转换成Java对象,方便进一步的处理和操作。 使用...

    httpclient post json 数据

    "httpclient post json数据"这个主题就是关于如何使用C#的HttpClient类来向Web API发送POST请求,并且以JSON格式传输数据。下面将详细解释这一过程。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的...

    httpclient4.3.3

    发送 POST 请求并携带 JSON 数据: ```java HttpPost httpPost = new HttpPost("http://example.com"); StringEntity entity = new StringEntity("{\"key\":\"value\"}", ContentType.APPLICATION_JSON); ...

    HttpClient发送post请求传输json数据

    在这个场景中,我们关注的是如何使用HttpClient来发送POST请求并传输JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于API接口的数据传递。 首先,我们需要引入Apache HttpClient...

    httpclient-oracle-mysql数据链接驱动包.rar

    - RESTful API交互:通过HTTPClient库发起HTTP请求,与远程RESTful服务进行交互,获取或发送JSON格式的数据,这在微服务架构中很常见。 - JSON数据处理:利用JSON解析库,将接收到的JSON字符串转换为Java对象,或者...

    wink-client-apache-httpclient-1.4.zip

    Apache HttpClient是一个Java库,它提供了强大的HTTP协议客户端实现,支持从简单的GET请求到复杂的POST、PUT、DELETE等HTTP方法。Wink是Apache软件基金会的一个RESTful Web服务开发框架,它包括服务器端和客户端组件...

    httpclient httpclient-4.3

    4. **强大的请求和响应处理**:支持 GET、POST、PUT、DELETE 等多种请求方法,以及丰富的头信息和请求体处理,包括文件上传、JSON 数据传递等。 5. **重试和恢复策略**:HttpClient 可以配置重试策略,自动处理常见...

    HttpClient--最全--安装包+官方文档(中文)

    5. **处理HTTP响应**:介绍如何获取和解析响应码、响应头和响应体,包括处理文本、XML、JSON等各种格式的数据。 6. **连接管理**:讲解如何设置连接超时、读写超时,以及连接池的配置和管理,以优化性能和资源利用...

    httpclient需要的jar包

    3. **httpmime-4.3.1.jar**:扩展了HTTPClient,提供了对多媒体类型的处理,例如MIME编码和解析,这对于发送和接收带有附件或复杂内容类型(如JSON或XML)的HTTP请求是必需的。 4. **httpasyncclient-4.0.2.jar**...

Global site tag (gtag.js) - Google Analytics