【问题标题】:Android Asynchronous Http Client upgradeAndroid 异步 Http 客户端升级
【发布时间】:2016-03-31 01:39:26
【问题描述】:

我遇到了 Android 异步 Http 客户端 (http://loopj.com/android-async-http/) 的问题。 直到今天我使用的是 1.4.6 版本和我的代码(见下文没有问题)。

RestClient.get(MyUrl, null, new JsonHttpResponseHandler() {
    @Override
    public void onStart() {
    Toast.makeText(getApplicationContext(), "START", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
        Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
        Toast.makeText(getApplicationContext(), "ERROR", Toast.LENGTH_SHORT).show();
    }
});

RestClient 在哪里:

public class RestClient {
    private static final String BASE_URL = "http://www.example.com/action.php?";

    private static AsyncHttpClient client = new AsyncHttpClient();

    public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
    client.get(getAbsoluteUrl(url), params, responseHandler);
    }

    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.post(getAbsoluteUrl(url), params, responseHandler);
    }

    private static String getAbsoluteUrl(String relativeUrl) {
        return BASE_URL + relativeUrl;
    }
}

在将 Android 异步 Http 客户端库从 1.4.6 升级到 1.4.9(最后一个)后,我在 Android Studio 上收到关于 onSuccess 和 onFailure 方法的错误“方法没有覆盖或实现来自超类型的方法”。

关于图书馆的变化有什么想法吗?我已阅读更改日志,但找不到解决方案。谢谢。

【问题讨论】:

    标签: android http asynchronous


    【解决方案1】:

    这些方法的接口已更改。你有: public void onSuccess(int statusCode, Header[] headers, JSONObject response)

    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable)

    更新后的界面为: public void onSuccess(int statusCode, Header[] headers, byte[] response)

    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e)

    看起来它已经从将字符串作为参数更改为使用字节数组。可能是为了避免对字符串的编码做出假设。

    【讨论】:

    • 这是对的,但是我使用 JsonHttpResponseHandler 来获取 JSONObject 响应,那么更改对我的代码有何影响?
    • 将代码放入 cmets 有点困难 - 但请尝试用我在上面发布的更新函数声明替换您的 onFailure 和 onSuccess 版本。然后注释掉函数主体中的代码(暂时)。你的代码编译了吗?编译完成后,您需要更改函数的主体以处理新接口。不幸的是,API 的作者可以随心所欲地更改接口。尽管通常它们会通过弃用外部程序员来提醒他们,并给您一段时间来使用重载函数让您过渡到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多