2016-02-05 35 views
2

我有一个卷曲的呼叫这样上传文件:如何使用Apache HttpPost

curl -i -X POST -H "Content-Type: multipart/form-data" -F "[email protected]_test/json_test.json" http://domain.com/api/upload_json/ 

所有我需要做的是一个Java实现这个呼叫。我已经创建了这个代码,但是这个文件似乎是空的。

public static void uploadJson(String url, File jsonFile) { 
    try { 
     HttpPost request = new HttpPost(url); 
     EntityBuilder builder = EntityBuilder 
       .create() 
       .setFile(jsonFile) 
       .setContentType(ContentType 
         .MULTIPART_FORM_DATA) 
       .chunked(); 
     HttpEntity entity = builder.build(); 
     request.setEntity(entity); 
     HttpResponse response = getHttpClient().execute(request); 
     logger.info("Response: {}", response.toString()); 
    } catch (IOException e) { 
     logger.error(e.getMessage()); 
    } 
} 

什么是构建此请求的正确方法?

回答

5
CloseableHttpClient httpClient = HttpClientBuilder.create() 
     .build(); 

HttpEntity requestEntity = MultipartEntityBuilder.create() 
     .addBinaryBody("file", new File("data_test/json_test.json")) 
     .build(); 
HttpPost post = new HttpPost("http://domain.com/api/upload_json/"); 
post.setEntity(requestEntity); 
try (CloseableHttpResponse response = httpClient.execute(post)) { 
    System.out.print(response.getStatusLine()); 
    EntityUtils.consume(response.getEntity()); 
} 
+0

它就像一个魅力,非常感谢你:) –