0

これは私の最初の質問です。私は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 を使用するのが初めてで、少し迷っています。みんなありがとう!

4

1 に答える 1

0

問題は、このサーバーには認証が必要であり、それを提供していない (または無効な資格情報を使用している) ことです。応答コードが 401 (Unauthorized) だったのでわかります。

401: 403 Forbidden に似ていますが、特に認証が必要で、失敗したか、まだ提供されていない場合に使用します [...]

HTTPClient のホームページには、認証に関する多くの情報があります。ここでその方法を確認することも、ここでいくつかのコード例を確認することもできます

于 2013-06-27T20:29:05.683 に答える