发出HTTP请求并获得HTTP响应
发出HTTP请求并获得HTTP响应的过程如下:
(1)定义HTTP请求HttpPut(HttpPost/HttpGet/HttpDelete)等;
(2)定义各种Header,并加入HttpPut中;
(3)定义HttpEntitty,将要发送的XML字符串加入HttpEntity,并将HttpEntity加入HttpPut;
(4)定义HttpClient,执行HttpPut,并返回HttpResponse;
(5)从HttpResponse中获得StatusCode;
(6)从HttpResponse中获得各种Header;
(7)从HttpResponse中获得HttpEntity,并获得其中的字符串输出。
代码如下:
// 修改队列参数
public static void modify_queue_attributes(){ // 定义HttpClient
HttpClient httpClient = new DefaultHttpClient();
// Uri
String hs = host + "/" + queName +"?Metaoverride=true";
// 定义HttpPut
HttpPut httpPut = new HttpPut(hs);
// 各种Header
httpPut.setHeader("Date", time);
System.out.println("Date:" + time);
httpPut.setHeader("x-mqs-version", version);
System.out.println("x-mqs-version:" + version);
httpPut.setHeader("Authorization", auth);
System.out.println("Authorization:" + auth);
httpPut.setHeader("Content-Type", content_type);
System.out.println("Content-Type:" + content_type);
// 消息体内容(XML格式)
StringBuilder req = new StringBuilder();
String s = new String("");
s = "<?xml version=" + "\"" + "1.0" +"\"" + " encoding=" + "\"" + "UTF-8" + "\"" +" ?>";
req.append(s);
s = "<Queue xmlns=" + "\"" + "http://mqs.aliyuncs.com/doc/v1/" + "\"" + ">";
req.append(s);
s = "<VisibilityTimeout>120</VisibilityTimeout>";
req.append(s);
s = "<MaximumMessageSize>1024</MaximumMessageSize>";
req.append(s);
s = "<MessageRetentionPeriod>120</MessageRetentionPeriod>";
req.append(s);
s = "<DelaySeconds>60</DelaySeconds>";
req.append(s);
s = "</Queue>";
req.append(s);
System.out.println();
System.out.println(req);
// 定义HttpEntity
HttpEntity entity;
try{
// StringEntity
entity = new StringEntity(req.toString());
// 为HttpPut设置Entity
httpPut.setEntity(entity);
// HttpClient执行HttpPut,并返回HttpResponse
HttpResponse httpResponse = httpClient.execute(httpPut);
// 获得StatusCode
int statusCode = httpResponse.getStatusLine().getStatusCode();
System.out.println("Status Code: " + statusCode);
// 获得HttpResponse的各种Header
Header[] header;
header = httpResponse.getHeaders("Content-Length");
if (header.length != 0){
// System.out.println(header[0].toString());
}
header = httpResponse.getHeaders("Connection");
if (header.length != 0){
// System.out.println(header[0].toString());
}
header = httpResponse.getHeaders("Date");
if (header.length != 0){
// System.out.println(header[0].toString());
}
header = httpResponse.getHeaders("Server");
if (header.length != 0){
// System.out.println(header[0].toString());
}
header = httpResponse.getHeaders("x-mqs-request-id");
if (header.length != 0){
// System.out.println(header[0].toString());
}
header = httpResponse.getHeaders("x-mqs-version");
if (header.length != 0){
// System.out.println(header[0].toString());
} // 获得HttpResponse的HttpEntity并以字符串形式输出
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null){
InputStream instreams = httpEntity.getContent();
String str = ConvertStreamToString(instreams);
System.out.println("Response:" + "\n" + str);
}
}
catch(Exception e){
System.out.println("Error=" + e.toString());
} }
返回结果为:
Status Code: 403
Response:
<?xml version="1.0"?>
<Error xmlns="http://mqs.aliyuncs.com/doc/v1">
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<RequestId>53D60FE4048A936A361D8ABA</RequestId>
<HostId>http://huvaw6yih3.mqs-cn-hangzhou.aliyuncs.com</HostId>
</Error>
发出HTTP请求并获得HTTP响应的更多相关文章
- 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
转http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 ...
- ajax客户端请求与服务端响应浅谈
AJAX,即Asynchronous Javascript And XML,AJAX本质是在HTTP协议的基础上以异步的方式与服务器进行通信. 所谓的异步,是指某段程序执行不会阻塞其他程序执行,其表现 ...
- http请求报文格式和响应报文格式
转载 出处 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求 ...
- HTTP请求格式和HTTP响应格式
主要内容: 1.HTTP请求格式 2.HTTP响应格式 一.HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l 请求方 ...
- 简述HTTP报文请求方法和状态响应码
1. Method 请求方法,表明客户端希望服务器对资源执行的动作: 1.1 GET 向服务器请求资源. 1.2 HEAD 和GET方法的行为类似,但服务器在响应中只返回首部,不会返回实体的主体部分. ...
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...
- 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...
- HTTP请求报文和HTTP响应报文
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request ...
- HTTP请求报文和HTTP响应报文(转)
原文地址:http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串, ...
随机推荐
- 每天一个linux命令(55):traceroute命令
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 ...
- Redis操作命令总结
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/118.html?1455860089 一.key pattern 查询相应 ...
- redis数据结构整理(一)
摘要: 0.redis安装 1.redis的常用数据结构类型 1.1 String 1.2 List 1.3 Set 1.4 Sorted Set 1.5 Hash 2.redis是单进程单 ...
- 基础才是重中之重~stream和byte[]的概念与转化
回到目录 多看几篇 之所以写这篇文章完全是因为最近在研究FastDFS这个分布式的文件存储系统,当然这不是我第一次研究它了,就像我们去看一本书,我们不会只看一篇,而是一次次,一篇篇,每看一次会有新的收 ...
- PHP变量作用域
PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖,这可能引起一些问题,有些人可能不小心就改变了一个全局变量.PHP 中全局变量在函数中使用时必须 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- iOS-------应用性能调优的25个建议和技巧
性能对 iOS 应用的开发尤其重要,如果你的应用失去反应或者很慢,失望的用户会把他们的失望写满App Store的评论.然而由于iOS设备的限制,有时搞好性能是一件难事.开发过程中你会有很多需要注意的 ...
- cmd复制文件
cmd复制文件 复制文件夹,自动覆盖 xcopy /E/I/Y "D:\GitHub\Qriket\lucky\SPA\dist" "D:\GitHub\lucky\ww ...
- Linux常用命令01
Linux对于我们来说,就是跑程序的运行平台,简单的来说,就是服务器,自己也没怎么系统的学习Linux的命令,随着项目的需要, 比如要查找日志,哪里出问题了,哪里报错了,因此自己也慢慢地懂一些常用的L ...
- Liferay7 BPM门户开发之43: Gradle依赖管理
进入liferay v7.0,官方推荐使用Gradle进行依赖管理和发布,所以必须知道Gradle的用法,网上资料很多,不赘述 只写依赖管理的分类 一般用外部仓库依赖,也可以用本地文件依赖(依赖本地j ...