Эмуляция cURL через HTTPClient Apache

Я пытаюсь загрузить данные в CrowdFlower, используя их API, для которых я пишу оболочку JAVA. Я использую HttpClient Apache.

Пример CURL, который дает CrowdFlower, следующий: curl -T 'sampledata.xlsx' -H 'Content-Type: application/vnd.ms-excel' https://api.crowdflower.com/v1/jobs/upload.json?key={api_key}

вот мой код:

public InputStream HTTPmethodPostUpload (String authKey, File file) throws ClientProtocolException, IOException{

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("https://api.crowdflower.com/v1/jobs/upload.json?key="+authKey);

        MultipartEntity mpEntity = new MultipartEntity();
        ContentBody cbody = new FileBody( file,"application/vnd.ms-excel");
        mpEntity.addPart("sampledata.xlsx", cbody );
        httpPost.setEntity(mpEntity);
        HttpResponse response = httpclient.execute(httpPost);
        HttpEntity entityResponse = response.getEntity();
        return  entityResponse.getContent(); }

Hower это возвращает мне ошибку со следующим сообщением:

{Недопустимый формат, Content-Type должен быть одним из перечисленных в \"форматах \", но вы отправили \"multipart/form-data; border =yTuwTm4hWmnasxIMB9dC-sxdELIGoNJVudjJdCz\"","format ":["application/vnd.oasis.opendocument.spreadsheet","приложение /vnd.openxmlformats-officedocument.spreadsheetml.sheet","применение /vnd.ms-первенствует", "текст / CSV", "текст / обычный"]}}

Я плохо знаю Apache HttpClient, поэтому не понимаю, в чем проблема в моем коде.

1 ответ

Где в java вы установили заголовок?

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

попробуйте ниже:

mpEntity.setContentType("application/vnd.ms-excel");
Другие вопросы по тегам