java HTTPClient Apache模拟cURL

ct2axkht  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(196)

我正在尝试使用CrowdFlower的API上传数据,为此我正在编写JAVA Package 器。我正在使用HttpClient Apache。
CrowdFlower给予的cURL示例如下:curl -T 'sampledata.xlsx' -H 'Content-Type: application/vnd.ms-excel' https://api.crowdflower.com/v1/jobs/upload.json?key={api_key}
下面是我的代码:

  1. public InputStream HTTPmethodPostUpload (String authKey, File file) throws ClientProtocolException, IOException{
  2. HttpClient httpclient = new DefaultHttpClient();
  3. HttpPost httpPost = new HttpPost("https://api.crowdflower.com/v1/jobs/upload.json?key="+authKey);
  4. MultipartEntity mpEntity = new MultipartEntity();
  5. ContentBody cbody = new FileBody( file,"application/vnd.ms-excel");
  6. mpEntity.addPart("sampledata.xlsx", cbody );
  7. httpPost.setEntity(mpEntity);
  8. HttpResponse response = httpclient.execute(httpPost);
  9. HttpEntity entityResponse = response.getEntity();
  10. return entityResponse.getContent(); }

字符串
但是,它返回一个错误,并显示以下消息:

  • {不可接受的格式,Content-Type必须是“formats”中列出的格式之一,但您发送了“multipart/form-data; boundary= yTuwTm 4 hWmnasxIMB 9dC-sxdELIGoNJVudjJdCz”",“formats”:[“application/vnd.oasis.opendocument. spreadsheet”,“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”,“application/vnd.ms-excel”,“text/csv”,“text/plain”]}}*

我不太了解Apache HttpClient,所以我不明白我的代码中的问题在哪里。

1wnzp6jl

1wnzp6jl1#

在java中,你在哪里设置了header?

  1. -H 'Content-Type: application/vnd.ms-excel'

字符串
试试下面的:

  1. mpEntity.setContentType("application/vnd.ms-excel");

相关问题