我正在尝试向端点发布内容,并使用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
。
我在做什么错了?
答案 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。