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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM