Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用HTTPClient发送带有HTTP请求的JSON字符串_Java_Json_Http_Httpclient - Fatal编程技术网

如何在Java中使用HTTPClient发送带有HTTP请求的JSON字符串

如何在Java中使用HTTPClient发送带有HTTP请求的JSON字符串,java,json,http,httpclient,Java,Json,Http,Httpclient,这是我的第一个问题。我喜欢阅读,但我一直是个读者,而不是作家。现在什么都没有了: 所以我见过很多不同的问题,像这样,相信我,我看起来。。。但他们似乎没有一个人能准确地回答我的问题。我正在设计一个测试工具来测试API,它涉及使用HttpClient(Java)发送HTTP请求。对于某些请求,例如POST请求,必须随请求一起发送JSON字符串或XML字符串。(这里我只想问一下JSON,如果有人也知道如何使用XML,我很乐意,但我会把它留给另一个问题。) 无论如何,我有以下代码到目前为止,似乎它应该做

这是我的第一个问题。我喜欢阅读,但我一直是个读者,而不是作家。现在什么都没有了:

所以我见过很多不同的问题,像这样,相信我,我看起来。。。但他们似乎没有一个人能准确地回答我的问题。我正在设计一个测试工具来测试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的主页上有很多关于身份验证的信息。您可以检查如何做到这一点,也可以检查一些代码示例