我正在尝试向端点发帖并使用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
。
我究竟做错了什么?
在我看来,你需要使用或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。