LoopJ AndroidAsyncHttp StringEntity 问题

LoopJ AndroidAsyncHttp StringEntity Issue

我正在将 StringEntity 与 AndroidAsyncHttp 结合使用,但它已被弃用。有没有另一种方法可以在以我发送到我的网络服务的方式发送我的 json 字符串时让它工作?

public void getPropertyImagesAsync(final String[] params) {
    JsonStructure jsonStructure = new JsonStructure();
    jsonStructure.methodName = "getPropertyWorkorders";
    jsonStructure.serviceName = "mobileapi";
    jsonStructure.parameters = params;

    String jsonString = new Gson().toJson(jsonStructure);

    StringEntity entity = null;
    try {
        entity = new StringEntity(jsonString);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    AsyncHttpClient client = new AsyncHttpClient();
    client.post(visnetawrap, BASE_URL + "/amf/gateway/?contentType=application/json", entity, "application/json", new TextHttpResponseHandler() {
        @Override
        public void onFailure(int i, Header[] headers, String s, Throwable throwable) {
            AppUtils.outputJsonString(s);
        }

        @Override
        public void onSuccess(int i, Header[] headers, String s) {
            AppUtils.outputJsonString(s);
        }
    });
}

密切关注情况,但您暂时可以继续使用 StringEntity

StringEntity 实际上是 Apache HTTP 的一部分,而不是 android-async-http。 Google 在 SDK 22 中弃用了整个 Apache HTTP API,并在 SDK 23(M 预览版)中将其从存根库中删除。据报道它仍然可以在 M 设备上运行,但你无法编译它。

不幸的是,android-async-http 是围绕 Apache HTTP 设计的。更糟糕的是,它公开了它对 API 的使用,因此无法在不导致损坏的情况下对其进行更改。开发人员已宣布计划确保持续支持,可能通过引入对独立 Apache HTTP 的依赖。

我建议您使用库来进行网络操作。你可以使用改造。这是一个功能强大且易于使用的库。

http://square.github.io/retrofit/