0

Android アプリから jersey クライアントを使用して Web サービスに接続しています。のバージョンandroid is 1.6 (api level 4)

jersey-core-1.12.jar and jersey-client-1.12.jarライブラリを参照しました。

(application/x-www-form-urlencoded)でリクエストを呼び出すとMediaType.APPLICATION_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 update 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);
4

1 に答える 1

1

私は同じ問題を抱えていました

Java タイプのメッセージ本文ライター、クラス com.sun.jersey.core.util.MultivaluedMapImpl

エラーが発生し、Maven の依存関係の問題になりました。jersey-*私が含めた単一のアーティファクトを使用する代わりにjersey-bundle、それは機能しました。例えば

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.14</version>
    </dependency>
于 2012-09-28T05:25:04.453 に答える