使用AsyncHttp

时间:2018-09-17 14:22:23

标签: java multipart asynchttpclient

我正在尝试向端点发布内容,并使用AsyncHttp设置一些表单参数和文件。

这是我的代码:

httpClient.preparePost(url)
    .addHeader(HttpHeaders.AUTHORIZATION, authorizationToken)
    .addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
    .addFormParam("type", type)
    .addBodyPart(new ByteArrayPart("file", file.getBytes()))
    .execute()
    .get();

现在我得到的是4xx,但是如果我用邮递员进行操作,它将可以工作并且得到201

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我认为,您需要使用或json(不使用表单参数和发送文件,或者使用multipart / form-data POST而不是json)。

因此,您可以替换:

.addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)

至:

.addHeader(HttpHeaders.ACCEPT, MediaType.MULTIPART_FORM_DATA)

或者(如果您确实需要json),则应删除.addFormParam("type", type)并使用类似这样的内容:

httpClient.preparePost(url)
    .addHeader(HttpHeaders.AUTHORIZATION, authorizationToken)
    .addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
    .setBody(jsonContent)
    .execute()
    .get();

当jsonContent是您的json内容时。另请参阅以下问题:Posting a File and Associated Data to a RESTful WebService preferably as JSON