發出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>
