0

我正在尝试使用http://loopj.com/android-async-http/和 usingPOST方法调用 web api。我在我的代码中发送 json 和内容类型,总是给出错误消息。

org.apache.http.client.HttpResponseException:不支持的媒体类型

当我在其他客户端使用相同的 json 和内容类型进行测试时,它工作正常。我不知道我还需要设置什么才能正确执行它。

请看我下面的代码。

// creating JSON using GSON library
Login mLogin = new Login();
mLogin.setUserName(userName);
mLogin.setPassword(password);

Gson gson = new GsonBuilder().create();
String loginJSON = gson.toJson(mLogin);

mHttpEntity = new StringEntity(loginJSON);

// execute the http asynchronously using post http method
asyncHttpClient.post(getActivity(), URL, mHttpEntity, "application/json", new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
        Logger.d(TAG, responseBody.toString());
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        Logger.d(TAG, responseBody.toString());
    }
});

提前致谢。

4

2 回答 2

0

如果您org.apache.http.client.HttpResponseException: Unsupported Media Type在您的应用程序中而不是在 REST 客户端中获得,那么问题可能与您在 POST 活动中添加额外的东西有关。服务器可能接收到太多(或可能太少)的参数,因此发回了错误的响应。

如果没有看到您的实际帖子,我无法准确指出问题出在哪里,但我的建议是尝试查看服务器从您的 POST 接收的内容,并确保您在 Android POST 中发送的项目与 REST API 客户端匹配准确发布。

于 2014-09-17T17:44:56.560 回答
0

就我而言,问题在于我没有设置 HTTP 标头之一,因此我必须添加:

.setHeader(HttpHeaders.CONTENT_TYPE,"multipart/form-data")

或者无论您的内容类型是什么...

于 2017-03-21T16:03:49.857 回答