package com.jfbank.loan.intf.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import ms.platform.base.log.MSLog;

import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.http.protocol.HTTP;

public class HttpClientUtil {

private static HttpClientUtil clientUtil ;

private static CloseableHttpClient httpClient = null;

static {
//
httpClient = HttpClients.createDefault();
//
clientUtil = new HttpClientUtil();
}

private int status = 0;

/**
* 私有化构造方法
*/
private HttpClientUtil() {

}

/**
* 获取当前对象,单例对象
* @return
*/
public static HttpClientUtil getInstance() {

return clientUtil;
}

/**
* POST提交
* @param strUrl 请求URL
* @param strJson 请求json字符串
* @return
*/
public String postJson(String strUrl,String strJson) {

String body = null;
if (strJson != null && !"".equals(strJson.trim())) {

try {
//实体
StringEntity entity = new StringEntity(strJson.toString(),"utf-8");
//post
HttpPost postMethod = new HttpPost(strUrl);
postMethod.setEntity(entity);

long startTime = System.currentTimeMillis();

//响应
CloseableHttpResponse response = httpClient.execute(postMethod);
long endTime = System.currentTimeMillis();
int statusCode = response.getStatusLine().getStatusCode();

MSLog.info("statusCode:" + statusCode);
MSLog.info("调用API 花费时间(单位:毫秒):" + (endTime - startTime));

if (statusCode != HttpStatus.SC_OK) {
MSLog.error("Method failed:" + response.getStatusLine());
status = 1;
}

// Read the response body
body = EntityUtils.toString(response.getEntity());

} catch (IOException e) {
// 发生网络异常
MSLog.error("exception occurred:",e);
// 网络错误
status = 3;
} finally {
MSLog.info("调用接口状态:" + status);
}
}

return body;
}

/**
* POST提交
* @param strUrl 请求URL
* @param strJson 请求json字符串
* @return
*/
public String postMap(String strUrl,Map<Object, Object> paraMap) {

String body = null;

if (paraMap != null && paraMap.size() > 0) {

try {

/** 设置请求参数 */
//实体
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
//赋值
for (Object key : paraMap.keySet()) {
nvps.add(new BasicNameValuePair(key.toString(), (String)paraMap.get(key)));
}

//post
HttpPost postMethod = new HttpPost(strUrl);
postMethod.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//请求时间
long startTime = System.currentTimeMillis();
//响应
CloseableHttpResponse response = httpClient.execute(postMethod);
long endTime = System.currentTimeMillis();
int statusCode = response.getStatusLine().getStatusCode();

MSLog.info("statusCode:" + statusCode);
MSLog.info("调用API 花费时间(单位:毫秒):" + (endTime - startTime));

if (statusCode != HttpStatus.SC_OK) {
MSLog.error("Method failed:" + response.getStatusLine());
status = 1;
}
// Read the response body
body = EntityUtils.toString(response.getEntity());

} catch (IOException e) {
// 发生网络异常
MSLog.error("exception occurred:",e);
// 网络错误
status = 3;
} catch (Exception e) {
e.printStackTrace();
} finally {
MSLog.info("调用接口状态:" + status);
}
}

return body;
}

}

java post请求的更多相关文章

  1. Java HTTP请求

    注意:java  http请求要放在 try catch里面,该过程是一个阻塞过程,所以需要新建一个线程进行处理 try { HttpPost request = new HttpPost(URL); ...

  2. java读取请求中body数据

    java读取请求中body数据 /** * 获取request中body数据 * * @author lifq * * 2017年2月24日 下午2:29:06 * @throws IOExcepti ...

  3. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  4. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求   Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...

  5. 解决Fiddler不能监听Java HttpURLConnection请求的方法

    在默认情况下,Fiddler不能监听Java HttpURLConnection请求.究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是 在应用程 ...

  6. 使用Fiddler监听java HttpURLConnection请求

    使用Fiddler监听java HttpURLConnection请求

  7. java判断请求是否ajax异步请求

    java判断请求是否ajax异步请求   解决方法: if (request.getHeader("x-requested-with") != null && re ...

  8. kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件

    小菜利用工作之余编写了一款Java小插件,主要是用来验证Web请求的数据,是在服务器端进行验证,不是简单的浏览器端验证. 小菜编写的仅仅是一款非常初级的组件而已,但小菜为它写了详细的说明文档. 简单介 ...

  9. Java 监控请求

    监控对象 import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Map.Ent ...

随机推荐

  1. Flume协作框架

    1.概述 ->flume的三大功能 collecting, aggregating, and moving 收集 聚合 移动 2.框图 3.架构特点 ->on streaming data ...

  2. javascript === 与 ==

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Sublime text插件使用技巧

    1.CSScomb 一个css代码格式化插件,在css文件中或选中css代码,使用快捷键:  [ctrl+shift+c],即可实现代码的对齐等格式的优化. mac下修改快捷键:  Preferenc ...

  4. SQL PROMPT 取消dbo前缀

    SQL Prompt 无疑大大提高了开发者的效率,高效而简单,特别适合大型的数据库脚本编写,但遗憾得是至今没有可供使用的中文版本.SQL Prompt 默认对象名前面会有 dbo 前缀,在一些场合这样 ...

  5. Invitation Cards---poj1511(spfa)

    题目链接:http://poj.org/problem?id=1511 有向图有n个点m条边,求点1到其他n-1个点的最短距离和+其他点到点1的最小距离和: 和poj3268一样,但是本题的数据范围较 ...

  6. OO之美2

    面向对象并没有想象中那么神秘,以生活的现实眼光来看更是如此.把面向对象深度浓缩起来,可以概括为: ⑴目标:重用,扩展,兼容 ⑵核心:低耦合,高内聚 ⑶手段:封装变化 ⑷思想:面向接口编程,面向抽象编程 ...

  7. 我的工具箱之FileZilla_3.11.0.1_win32-setup.1432524055

    FileZilla是用于在Win和Linux之间传递文件的工具,支持FTP和SFTP. 下载地址:http://pan.baidu.com/s/1gelyIYn 2016年3月2日10:29:30

  8. [代码片段]读取BMP文件(二)

    #include <stdio.h> #include <stdlib.h> #pragma pack(2) /*定义WORD为两个字节的类型*/ typedef unsign ...

  9. SVN Working Copy locked ,并且进行clean up也还是不行

    标题:working copy locked 提示:your working copy appears to be locked. run cleanup to amend the situation ...

  10. Charles抓包工具的使用

    HTTP抓包 打开Charles程序 查看Mac电脑的IP地址,如192.168.1.7 打开iOS设置,进入当前wifi连接,设置HTTP代理Group,将服务器填为上一步中获得的IP,即192.1 ...