Télécharger le fichier dans les données de formulaire en utilisant Java

Paul :

Je suis en train d'effectuer une demande HTTP Post en Java en utilisant l'API Apache.

Avec le look de demande papillotes comme celui-ci

curl https://host/upload
-X POST
-H "Authorization: Bearer xxx"
-H "Content-Type: multipart/form-data"
-H "Accept: application/json"
-F "file=@{PathToImage}" -F "type=file" 

Bien que cette fin de travail lors de l'exécution avec CURL le serveur renvoie un résultat 500er lors de l'exécution avec le code Java suivant

    final HttpPost httppost = new HttpPost("https://host/upload");
    httppost.addHeader("Authorization", "Bearer xxx");
    httppost.addHeader("Accept", "application/json");
    httppost.addHeader("Content-Type", "multipart/form-data");

    final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    final File file = new File("c:\\tmp\\myfile.pdf");
    builder.addBinaryBody("file", file);
    builder.addTextBody("type", "file");
    final HttpEntity entity = builder.build();
    httppost.setEntity(entity);
    final HttpResponse response = httpclient.execute(httppost);
    httpclient.close();

Toute idée de ce que je suis absent ici?

C. Smith:

Cette question est similaire. Mais je crois que la réponse est de changer votre addBinary à addPart.

final HttpPost httppost = new HttpPost("https://host/upload");
httppost.addHeader("Authorization", "Bearer xxx");
httppost.addHeader("Accept", "application/json");
httppost.addHeader("Content-Type", "multipart/form-data");

final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
final File file = new File("c:\\tmp\\myfile.pdf");
builder.addPart("file", new FileBody(file));
builder.addTextBody("type", "file");
final HttpEntity entity = builder.build();
httppost.setEntity(entity);
final HttpResponse response = httpclient.execute(httppost);
httpclient.close();

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=329830&siteId=1
conseillé
Classement