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);