如何设置"内容类型" RestEasy客户端框架中使用代理接口的标头?

时间:2014-11-18 15:23:08

标签: json api rest proxy resteasy

我正在使用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”?使用一些注释可能吗?

感谢

2 个答案:

答案 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标头。