Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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/4/json/13.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 如何使用HttpUrlConnection发送JSON和附加文件_Java_Json_Api_Post_Attachment - Fatal编程技术网

Java 如何使用HttpUrlConnection发送JSON和附加文件

Java 如何使用HttpUrlConnection发送JSON和附加文件,java,json,api,post,attachment,Java,Json,Api,Post,Attachment,我需要在POST中将JSON和CSV文件发送到第三方API: curl -H "aToken:$TOKEN" --form-string 'json={"project": "1234", "template": "5678","data":[{"date": "2017-05-26","place": "

我需要在POST中将JSON和CSV文件发送到第三方API:

 curl -H "aToken:$TOKEN" --form-string 'json={"project": "1234", "template": "5678","data":[{"date": "2017-05-26","place": "my house"}, {"person":"alice"}]}' -F 'file=@path/to/file.csv' 'https://the.api.com/api/23/postData'

我更喜欢使用HTTPUrlConnection,但我的理解是,我一次只能发送一种类型的数据。也许我可以使用ProcessBuilder调用Curl,但我想找到一个本机java解决方案。

在研究了这一点之后,Apache的HTTPClient似乎是最好的解决方案:

添加这些依赖项后:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.5.13</version>
</dependency>

API对内容有何期望?首先是JSON,然后是CSV?是的,基于他们的curl示例(虽然我不知道这是否会转化为httpurlconnection)。也许会有帮助。谢谢。这可能行得通,但我将使用支持良好的Apache库(如下所示)。
HttpEntity entity = MultipartEntityBuilder
    .create()
    .addTextBody("ID", "1234")
    .addBinaryBody("CSVfile", new File("c:\\temp\\blah.csv"), ContentType.create("application/octet-stream"), "filename")
    .build();

HttpPost httpPost = new HttpPost("http://www.apiTest.com/postFile");
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity result = response.getEntity();