我的构建路径上有jersey-client-2.25.1,我知道它有将javax.ws.rs.core.Form转换为application / x-www-form-urlencoded的默认提供程序。
但是对于这段代码:
private ClientResponse getResponse(Authorization authInstance, Form formData) {
return webResourceInstance.type(MediaType.APPLICATION_FORM_URLENCODED).
header("Authorization",encode(authInstance)).
post(ClientResponse.class, formData);
}
我一直在:
com.sun.jersey.api.client.ClientHandlerException: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class javax.ws.rs.core.Form, and MIME media type, application/x-www-form-urlencoded, was not found
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
我不应该按照this注册MultiPart类。
答案 0 :(得分:3)
是的,但是你没有使用它。您正在使用Jersey 1.x客户端。我的构建路径上有jersey-client-2.25.1
ClientResposne,WebResource
,即泽西1.x.泽西岛(JAX-RS)1,不支持javax.ws.rs.core.Form
。这是一个JAX-RS 2类。如果你做使用你的泽西2客户端,它会工作。
如果你想坚持使用Jersey 1.x客户端,那么(使用application / x-www-form-urlencoded),它支持com.sun.jersey.api.representation.Form
和MultivaluedMap