【发布时间】:2018-08-19 12:16:45
【问题描述】:
我似乎没有从 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;
}
【问题讨论】:
-
在 curl 中您将字段命名为
files,但在 Java 中您将其命名为ISO xml file。由于服务器只寻找files,它什么也看不到,什么也没有响应。 -
参数名称呢?在 curl 上,您使用了“文件”,在 http 客户端上,您使用了“ISO xml 文件”。尝试将其更改为“文件”。
-
我将“ISO xml 文件”更改为“文件”并且它有效。我没有意识到那个领域的重要性——我认为它只是为了识别。那么该行末尾的字符串有什么意义呢?我用 file.getName() 填充的字符串???
标签: java apache-httpclient-4.x