[Java] 两种发起POST请求方法,并接收返回的响应内容的处理方式
1、利用apache提供的commons-httpclient-3.0.jar包
代码如下:
/**
* 利用HttpClient发起POST请求,并接收返回的响应内容
*
* @param url 请求链接
* @param type 交易或响应编号
* @param message 请求内容
* @return 响应内容
*/
public String transRequest(String url, String type, String message) {
// 响应内容
String result = "";
// 定义http客户端对象--httpClient
HttpClient httpClient = new HttpClient();
// 定义并实例化客户端链接对象-postMethod
PostMethod postMethod = new PostMethod(url);
try{
// 设置http的头
postMethod.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");
// 填入各个表单域的值
NameValuePair[] data = { new NameValuePair("type", type), new NameValuePair("message", message) };
// 将表单的值放入postMethod中
postMethod.setRequestBody(data);
// 定义访问地址的链接状态
int statusCode = 0;
try
{
// 客户端请求url数据
statusCode = httpClient.executeMethod(postMethod);
}
catch (Exception e)
{
e.printStackTrace();
}
// 请求成功状态-200
if (statusCode == HttpStatus.SC_OK) {
try {
result = postMethod.getResponseBodyAsString();
} catch (IOException e) {
e.printStackTrace();
}
} else {
log.error("请求返回状态:" + statusCode);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
// 释放链接
postMethod.releaseConnection();
httpClient.getHttpConnectionManager().closeIdleConnections(0);
}
return result;
}
2、利用java自带的java.net.*包下提供的工具类
代码如下:
/**
* 利用URL发起POST请求,并接收返回信息
*
* @param url 请求URL
* @param message 请求参数
* @return 响应内容
*/
@Override
public String transport(String url, String message)
{
StringBuffer sb = new StringBuffer();
try
{
URL urls = new URL(url);
HttpURLConnection uc = (HttpURLConnection) urls.openConnection();
uc.setRequestMethod("POST");
uc.setRequestProperty("content-type", "application/x-www-form-urlencoded");
uc.setRequestProperty("charset", "UTF-8");
uc.setDoOutput(true);
uc.setDoInput(true);
uc.setReadTimeout(10000);
uc.setConnectTimeout(10000);
OutputStream os = uc.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.write(message.getBytes("utf-8"));
dos.flush();
os.close();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(), "utf-8"));
String readLine = "";
while ((readLine = in.readLine()) != null)
{
sb.append(readLine);
}
in.close();
}
catch (Exception e)
{
log.error(e.getMessage(), e);
}
return sb.toString();
}
[Java] 两种发起POST请求方法,并接收返回的响应内容的处理方式的更多相关文章
- java中两种发起POST请求,并接收返回的响应内容的方式 (转)
http://xyz168000.blog.163.com/blog/static/21032308201162293625569/ 2.利用java自带的java.net.*包下提供的工具类 代码如 ...
- 接口测试中GET和POST两种基本HTTP请求方法的区别
面试时,可以回答(一般答前4条就行): GET参数通过url传递,POST放在request body中 GET请求在url中传递的参数是有长度限制的,而POST没有 GET比POST更不安全,因为参 ...
- Eclipse中SVN的安装步骤(两种)和使用方法
Eclipse中SVN的安装步骤(两种)和使用方法 一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.下载最新的Eclipse,我的 ...
- java两种同步机制的实现 synchronized和reentrantlock
java两种同步机制的实现 synchronized和reentrantlock 双11加保障过去一周,趁现在有空,写一点硬货,因为在进入阿里之后工作域的原因之前很多java知识点很少用,所以记录一下 ...
- SSH简介及两种远程登录的方法
出处 https://blog.csdn.net/li528405176/article/details/82810342 目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别 ...
- C#两种创建快捷方式的方法
C#两种创建快捷方式的方法http://www.cnblogs.com/linmilove/archive/2009/06/10/1500989.html
- iOS - UITableView中有两种重用Cell的方法
UITableView中有两种重用Cell的方法: - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequ ...
- 两种ps切图方法(图层/切片)
两种Ps切图方法 一. 基础操作: a) Ctrl++ 放大图片,ctrl - -缩小图片 b) 按住空格键space+,点击鼠标左键,拖动图片. c) 修改单位,点击编辑 ...
- TextView两种显示link的方法
TextView两种显示link的方法 一.简介 也是TextView显示文本控件两种方法 也是显示丰富的文本 二.方法 TextView两种显示link的方法 1)通过TextView里面的类ht ...
随机推荐
- SQL Case When Then
适用sqlServer,oracle CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 T ...
- (转载)javascript函数作用域和提前声明
http://www.cnblogs.com/ArthurPatten/p/3274080.html 一些语言如C.java都有块级作用域,即花括号内的每一段代码都具有各自的作用域,而且变量在声明它们 ...
- JUnit 4 如何正确测试异常
本篇讲述如何在 JUnit 4 下正确测试异常,我会从 try..catch 的方式谈起,然后说到 @Test(expected=Exception.class), 最后论及 @Rules publi ...
- McAfee VirusScan Enterprise
企业版下载入口: http://www.mcafee.com/cn/downloads/downloads.aspxGrant number:6240017-NAI6240018-NAI 下载Vir ...
- LeetCode100:Same Tree
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- C#下实现的半角转与全角的互转
全角和半角的互转在C#下怎么实现呢? /// 转全角的函数(SBC case) /// ///任意字符串 ///全角字符串 /// ///全角空格为12288,半角空格为32 ///其他字符半角(33 ...
- jquery 更换皮肤
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- redis-在乌班图下设置自动启动
一.修改redis.conf 1.打开后台运行选项,默认情况下,Redis不在后台运行: daemonize yes 2.配置log文件地址,默认使用标准输入,即打印在命令行终端 的窗口上 logfi ...
- 【转】Android 防破解技术简介
http://www.cnblogs.com/likeandroid/p/4888808.html Android 防破解技术简介 这几年随着互联网的不断发展,Android App 也越来越多!但是 ...
- 关于Java中的程序,进程和线程的详解...
程序:一段静态的代码,一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体,是应用软件执行的蓝本. 进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个 ...