发出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. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

  2. GUID相关知识

      全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想 ...

  3. EF架构~为分组添加位运算聚合方法

    回到目录 我们知道在Linq里的分组groupby可以对集合中一个或者多个字段进行分组,并对其中一个属性进行聚合,而Linq为我们提供了多种聚合方法,由aver,sum,count等,而在大叔权限体系 ...

  4. atitit 英文与中文与阿拉伯文的简化解决方案.docx

    atitit 英文与中文与阿拉伯文的简化解决方案.docx 1. 英文与中文与阿拉伯文的简化意义1 2. 简化的主要方法分类2 2.1. 同音替代法(比如o2o)2 2.2. 符号法(比如英文i18n ...

  5. Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个

    Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个 2.J2EE平台相关规范--39个5 XML Parsing Specification16 J2EE Conne ...

  6. Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性

    Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性 Keyword Java ee5 ,Java ee6,Java ee7  j2ee5 jee5 j2ee6 j2 ...

  7. fir.im Weekly - 94 个 iOS 开发资源推荐

    距离 2016 年还有 17 个日夜,而你和回家只隔了一张 12306 验证码的距离,祝大家抢票顺利.本期 fir.im Weekly 收集了一些优秀的 GitHub 源码.开发工具和动画特效,希望对 ...

  8. 对于System.Net.Http的学习(三)——使用 HttpClient 检索与获取过程数据

    对于System.Net.Http的学习(一)——System.Net.Http 简介 对于System.Net.Http的学习(二)——使用 HttpClient 进行连接 如何使用 HttpCli ...

  9. 关于js中值的比较规则问题

    上一篇文章提到了javascript中可变值与不可变值,如果你不知道什么是可变值和不可变值,可以先去看看那篇文章,再回来看这篇,因为这篇文章是基于可变值与不可变值讲解的. 那我就默认你知道什么是可变值 ...

  10. 如果正确读取SQL Server中的扩展事件?

        SQL Server中使用扩展事件捕捉所需的信息后,可以选择存放的位置.比如说内存或文件中,但无论存在哪里,其本质都是一个大XML.因此在SQL Server中读取该XML就是解析扩展事件结果 ...