Android Jersey客户端com.sun.jersey.api.client.ClientHandlerException

时间:2012-08-16 23:29:44

标签: android rest jersey

我正在使用我的Android应用程序中的jersey客户端连接到Web服务。 android is 1.6 (api level 4)

的版本

我引用了jersey-core-1.12.jar and jersey-client-1.12.jar个库。

当我使用MediaType.APPLICATION_FORM_URLENCODED(application / x-www-form-urlencoded)调用请求时,我收到以下异常:

com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class com.sun.jersey.core.util.MultivaluedMapImpl, and MIME media type, application/x-www-form-urlencoded, was not found

在JDK 1.6更新04中使用相同的代码 - 一切正常。

以下是请求的服务器代码示例:

@Path("/" + RequestNames.LOGIN)
public class Login {

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response login(
            @FormParam(RequestParams.USER_NAME_PARAM) String userName,
            @FormParam(RequestParams.PASSWORD_PARAM) String password) {
...

以下是请求的客户端代码示例:

MultivaluedMap<String, String> formData = new MultivaluedMapImpl();
        formData.add(RequestParams.USER_NAME_PARAM, userName);
        formData.add(RequestParams.PASSWORD_PARAM, password);
        ClientResponse response =
                service.path(REST_PATH).path(RequestNames.LOGIN).type(
                        MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class, formData);

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题
  

Java类型的消息正文编写器,类com.sun.jersey.core.util.MultivaluedMapImpl

错误,最终成为maven依赖问题。我使用jersey-*而不是使用单jersey-bundle个工件。 E.g。

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.14</version>
    </dependency>