我在创建发布请求和使用Robospice google http java客户端发送json时遇到问题。我的问题是,服务器收到一个空的请求数据。 (postData中什么都没有)

@Override
    public AjaxResult loadDataFromNetwork() throws Exception {

        JsonHttpContent jsonHttpContent = new JsonHttpContent(new JacksonFactory(), jsonObject);

        //ByteArrayContent.fromString("application/json", jsonObject.toString())
        HttpRequest request = getHttpRequestFactory().buildPostRequest(
                new GenericUrl(baseUrl),
                jsonHttpContent);


        request.getHeaders().setContentType("application/json");

        request.setParser(new JacksonFactory().createJsonObjectParser());

        request.setContent(jsonHttpContent);

        HttpResponse httpResponse = request.execute();

        AjaxResult result =  httpResponse.parseAs(getResultType());

        return result;
    }


提前致谢!

最佳答案

您可以执行以下操作:

public class SignIn_Request extends GoogleHttpClientSpiceRequest<Login> {
    private String apiUrl;
    private JSONObject mJsonObject;

    public SignIn_Request(JSONObject mJsonObject) {
    super(Login.class);
    this.apiUrl = AppConstants.GLOBAL_API_BASE_ADDRESS + AppConstants.API_SIGN_IN;
    this.mJsonObject = mJsonObject;
    }

    @Override
    public Login loadDataFromNetwork() throws IOException {
    Ln.d("Call web service " + apiUrl);
    HttpRequest request = getHttpRequestFactory()//
        .buildPostRequest(new GenericUrl(apiUrl), ByteArrayContent.fromString("application/json", mJsonObject.toString()));
    request.setParser(new JacksonFactory().createJsonObjectParser());
    return request.execute().parseAs(getResultType());
    }

}


将您的JSON转换为字节数组,并将其包含在您的发布请求中。

10-07 19:30
查看更多