簡體   English   中英

如何在Java中使用HTTPClient使用HTTP請求發送JSON字符串

[英]How to send a JSON string with an HTTP request using in Java using HTTPClient

這是我的第一個問題。 我喜歡stackOverflow,但我一直都是讀者,而不是作家。 現在,這里什么也沒做:

所以我看過很多類似的問題,相信我,我看上去……但是他們似乎都沒有一個確切地回答我的問題。 我正在設計一種測試工具來測試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]

現在,我知道了基本的知識,並且我確定已經照顧好了它們……例如設置標頭Accept application / json,Content-Type application / json等。

任何建議將不勝感激。 我是使用HttpClient的新手,但我有點迷失了哈哈。 多謝你們!

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

401:類似於“ 403禁止”,但專門用於需要身份驗證且已失敗或尚未提供身份驗證的情況下使用。[...]

HTTPClient的主頁上有很多有關身份驗證的信息。 您可以檢查該怎么做這里也查了一些示例代碼在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM