无法从HttpClient获得完整的HTTP响应

时间:2018-08-17 19:52:54

标签: java apache-httpclient-4.x

我似乎没有从httpclient获得整个json响应。我遇到了像这样在本地运行的api:

curl -i -X POST http://localhost:8098/<api location> -F "files=@<filename>"

我的回答如下:

{"data":[<bunch of json>]

但是当我尝试使用httpclients发布完全相同的文件时,会收到以下响应:

{"data":[]}

我在做什么错?这是我的Java代码。谢谢!

public CloseableHttpResponse submit (File file) throws IOException {
    CloseableHttpClient client = HttpClients.createDefault();
    HttpPost post = new HttpPost(API_LOCATION + API_BASE);
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    builder.addBinaryBody("ISO xml file", file, ContentType.APPLICATION_OCTET_STREAM, file.getName());
    HttpEntity multipartEntity = builder.build();
    post.setEntity(multipartEntity);

    CloseableHttpResponse response = client.execute(post);
    System.out.println("response: " + IOUtils.toString(response.getEntity().getContent(),"UTF-8"));
    client.close();
    return response;
}

1 个答案:

答案 0 :(得分:1)

如安德烈亚斯(Andreas)和达尼洛(Danilo)在评论中所述:

  

在curl中,您将命名字段文件,而在Java中,将其命名为ISO xml文件。由于服务器仅查找文件,因此看不到任何内容,并且不响应。 -Andreas

     

参数名称呢?在curl上,您使用“文件”,在http客户端上,您使用“ ISO xml文件”。尝试将其更改为“文件”。 -Danilo

我需要将“ ISO xml文件”更改为“文件”,并且有效。