发出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响应的更多相关文章

  1. 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求

    转http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 ...

  2. ajax客户端请求与服务端响应浅谈

    AJAX,即Asynchronous Javascript And XML,AJAX本质是在HTTP协议的基础上以异步的方式与服务器进行通信. 所谓的异步,是指某段程序执行不会阻塞其他程序执行,其表现 ...

  3. http请求报文格式和响应报文格式

    转载 出处 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求 ...

  4. HTTP请求格式和HTTP响应格式

    主要内容: 1.HTTP请求格式 2.HTTP响应格式 一.HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l   请求方 ...

  5. 简述HTTP报文请求方法和状态响应码

    1. Method 请求方法,表明客户端希望服务器对资源执行的动作: 1.1 GET 向服务器请求资源. 1.2 HEAD 和GET方法的行为类似,但服务器在响应中只返回首部,不会返回实体的主体部分. ...

  6. 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...

  7. 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

    今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...

  8. HTTP请求报文和HTTP响应报文

    HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request ...

  9. HTTP请求报文和HTTP响应报文(转)

    原文地址:http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串, ...

随机推荐

  1. C# 加密–RSA前端与后台的加密&解密

    1. 前言 本问是根据网上很多文章的总结得到的. 2. 介绍 RSA加密算法是一种非对称加密算法. 对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法 ...

  2. 360路由器刷openwrt、不死uboot、双系统 、wifi中继

    该类教程网上有很多,但是很多不全,给小白用户造成了很多困扰.我也是按照网上的教程刷了半天,才熟悉了是怎么个回事.这里整理成教程. 注意: 请看教程步骤走,不要跳跃性刷机.不懂的术语.软件,若本文无介绍 ...

  3. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  4. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  5. mysqldump导出不包含存储过程

    mysqldump导出不包含存储过程 mysqldump -u 数据库用户名 -p -n -t -d -R --triggers=false 数据库名 > 文件名 这样单独把存储过程和函数导出 ...

  6. html5遵循的5个设计原则

    前面的话 实际上,html5并不是由w3c直接制定的,w3c的方向是xhtml2,而不是html5.当xhtml2脱离现实,无法付诸实践时,w3c工作组才将研究方向转向html5.为什么xhtml2从 ...

  7. 使用ab进行页面的压力测试

    ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 参数说明及示例 我们可以模拟100个并发用户,对一个页面发送1000个请求 输入命令:ab - ...

  8. PHP上传实现进度条

    Web上传文件的三种解决方案

  9. PhotoShop简介

    Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件.Photoshop主要处理以像素所构成的数字图像.使用其众多的编修与绘图工具,可以有效地进行图片编 ...

  10. 【GIT】Github上传本地代码详解

    本教程结合Github服务端和客户端完成本地代码上传至Github,下面进行详细讲解: 1.创建Github账号,这一个步骤应该不用太多解释,直接上官网进行注册登录即可https://github.c ...