使用AsyncHttp在请求中添加文件

问题描述 投票:0回答:1

我正在尝试向端点发帖并使用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

我究竟做错了什么?

java multipart asynchttpclient
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.