2013-06-27 95 views
0

這是我的第一個問題。我喜歡stackoverflow,但我一直是一個讀者,而不是作家。現在,這裏什麼都不做:如何使用HTTPClient在Java中使用HTTP請求發送JSON字符串

所以我見過很多這樣的不同問題,相信我,我看了......但他們沒有一個人似乎完全回答我的問題。我正在設計一個用於測試API的測試工具,它涉及使用HttpClient(使用Java)發送HTTP請求。對於某些請求(如POST請求),必須隨請求一起發送JSON字符串或XML字符串。 (我只在這裏詢問JSON,如果有人有關於如何做XML的答案,我很喜歡,但我會另存一個問題。)

不管怎樣,我有下面的代碼看起來像它應該做我想要的...但我得到400錯誤。我會認爲我已經正確創建的HttpClient和HttpPost的實例,應用適當的報頭,等等相關的部分是下面:

JSONObject JSONpayload = new JSONObject(); 
    JSONpayload.put("quantity", 1); 
    JSONpayload.put("sku", "21-53429"); 
    String JSONstring = JSONpayload.toString(); 

    System.out.println("JSON PAYLOAD BEING SENT: " + JSONstring); 
    request.setEntity(new StringEntity(JSONstring)); 

    response = client.execute(request); 

    System.out.println("SERVER RESPONSE STRING: " + response.toString()); 

我收到以下輸出:

JSON PAYLOAD BEING SENT: {"quantity":1,"sku":"21-53429"} 
SERVER RESPONSE STRING: HTTP/1.1 401 Unauthorized 
[Date: Thu, 27 Jun 2013 19:57:29 GMT, 
Server: Mule Core/3.3.1, 
Set-Cookie: sid=h8jumUyMxMztmB1AHtbvmUzzc9WchbiR9dQahD6Q; Version=1; 
Domain=192.168.235.9; 
Path=/, 
http.status: 401, 
X-MULE_SESSION: rO0ABXNyACNvcmcubXVsZS5zZXNzaW9uLkRlZmF1bHRNdWxlU2Vzc2lvbi7rdtEW7GGKAwAEWgAFdmFsaWRMAA1mbG93Q29uc3RydWN0dAAmTG9yZy9tdWxlL2FwaS9jb25zdHJ1Y3QvRmxvd0NvbnN0cnVjdDtMAAJpZHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAD3NlY3VyaXR5Q29udGV4dHQAJ0xvcmcvbXVsZS9hcGkvc2VjdXJpdHkvU2VjdXJpdHlDb250ZXh0O3hwAXB0ACRjYzQwMmMwNy1kZjYzLTExZTItOGY1Yi1kOTk2MTM2MzZkZjJwc3IAJWphdmEudXRpbC5Db2xsZWN0aW9ucyRTeW5jaHJvbml6ZWRNYXAbc/kJS0s5ewMAAkwAAW10AA9MamF2YS91dGlsL01hcDtMAAVtdXRleHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwc3IAJG9yZy5tdWxlLnV0aWwuQ2FzZUluc2Vuc2l0aXZlSGFzaE1hcJ3R2e9nRc4AAwAAeHB3DD9AAAAAAAAQAAAAB3QABWR1bW15dAAYOU9WX0FBQUJHQmdBQUFFX0lTQVFBNGMydAAJUm91dGVkVVJMdABhaHR0cDovLzE5Mi4xNjguMjM1Ljk6MzA4MC9nc2kvcmVzdC9XRlMvVE1TTkEtVE1TVVMtU2l0ZS9yZXN0L2NhcnRzLzlPVl9BQUFCR0JnQUFBRV9JU0FRQTRjMi9pdGVtc3QAC0NvbnRleHRQYXRodAATZ3NpLWV3cy1zZXJ2aWNlL3N2Y3QAC291dHB1dC10eXBldAAQYXBwbGljYXRpb24vanNvbnQAClJlcXVlc3RVUkx0AEsvZ3NpLWV3cy1zZXJ2aWNlL3N2Yy92MS4wL3N0b3Jlcy9UTVNVUy9jYXJ0cy85T1ZfQUFBQkdCZ0FBQUVfSVNBUUE0YzIvaXRlbXN0AAdTdG9yZUlEdAAMc3RvcmVzL1RNU1VTdAAKaW5wdXQtdHlwZXEAfgATeHEAfgAJeHg=, 
X-MULE_ENCODING: UTF-8, 
Content-Type: text/plain, 
Transfer-Encoding: chunked] 

現在,我知道基本的東西,我敢肯定,我已經拍了他們的照顧......像設置頁眉接受應用程序/ JSON,內容類型應用程序/ JSON等。

任何意見將不勝感激。我是新來的使用HttpClient,我有點失落哈哈。多謝你們!

回答

0

問題是,此服務器需要身份驗證,而您沒有提供它(或使用無效憑據)。我可以說,因爲響應代碼是401(未授權)。

401:類似403禁止,但專爲身份驗證時 是必需的,已發生故障或尚未提供使用[...]

了HTTPClient的主頁上有很多關於認證的信息。您可以檢查如何做到這一點here也檢查一些代碼示例here

相關問題