我正在使用Resteasy客户端代理框架与REST API进行通信。我已经在代理接口上定义了一些方法,但不幸的是,我在发送http请求时遇到了一些与 Content-Type 无法正确设置相关的问题,这给了我一个 http 400(错误请求)错误代码,因为远程API期望内容类型标头参数为 application / json 。
以下是它的样子:
@Path("/")
public interface RestAPIClient {
@POST
@Path("/send")
String send(@CookieParam("token") String token, @FormParam("name") String id, @FormParam("message") String message, @FormParam("emails") List<String> emails);
}
有没有办法直接在代理接口级别将“Content-type”标头设置为“application / json”?使用一些注释可能吗?
感谢
答案 0 :(得分:2)
我试试
@Consumes(MediaType.APPLICATION_JSON)
在POST上?
注意很多事情:你需要有一个派生方法的“实体”对象(不是@CookieParam或@FormParam)。 并在
所以你的方法必须像:
@POST
@Path("/auth")
@Consumes(MediaType.APPLICATION_JSON)
ConnectionInformation auth(@CookieParam("name") String name, @CookieParam("password") String password, MyJSONObject entity);
和“entity”将产生
Content-Type: application/json
你需要。
答案 1 :(得分:0)
以及使用:
@Consumes(MediaType.APPLICATION_JSON)
您需要确保请求的正文中确实有内容(不仅仅是参数)。
如果没有内容,则不会设置Content-Type标头。