首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得AsyncHttpClient onSucces值?

如何获得AsyncHttpClient onSucces值?
EN

Stack Overflow用户
提问于 2013-06-21 07:35:40
回答 2查看 2K关注 0票数 1

我有一个AsyncHttpClient,它向url发出get请求。我将接受方法onSuccess()的响应。我把我的代码粘贴到一个更好的解释。

CategoryActivity.java调用类的getXML方法"XMLParser“。在这种方法中,它是AsyncHttpClient。

代码语言:javascript
运行
复制
    XMLParser parser = new XMLParser(URL);
    xml = parser.getXML(URL);

XMLParser.java有.getXML(url)并返回一个字符串。我创建了一个变量xmlResponse来放置响应值,但它没有。

代码语言:javascript
运行
复制
    public String getXML(String url) {
    // get connection..
    String xmlResponse = "";

    AsyncHttpClient client = new AsyncHttpClient();
    client.get(url, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(String response) {
            super.onSuccess(response);
            xmlResponse = response;
        }
        @Override
        public void onFailure(Throwable e) {
            ma.showUserAlertQuestion();
        }
    });
    return xmlResponse;
}

我怎么才能拿回这个价值?提前谢谢,对不起我的英语很差。

EN

回答 2

Stack Overflow用户

发布于 2017-09-29 06:30:44

这实际上是一种种族状况。无法获得xmlResponse值的原因是,您的HTTP是一个异步方法,结果在它从服务器返回响应之前返回。

This answer基本上解释了一切,要获得onSuccess()的响应值,您需要使用一个接口:

代码语言:javascript
运行
复制
public Interface XMLCallback {
    onSuccess(String response);
}

在解析器类中:

代码语言:javascript
运行
复制
public String getXML(String url, XMLCallback callback) {
    AsyncHttpClient client = new AsyncHttpClient();
    client.get(url, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(String response) {
            super.onSuccess(response);
            callback.onSuccess(response);
        }
        @Override
        public void onFailure(Throwable e) {
            ma.showUserAlertQuestion();
        }
    });
}

在你的活动课上:

代码语言:javascript
运行
复制
private String XMLResponse = "";

XMLParser parser = new XMLParser(URL);
xml = parser.getXML(URL, new XMLCallback() {
    @Override
    public void onSuccess(String response) {
        XMLResponse = response;
    }
});
票数 2
EN

Stack Overflow用户

发布于 2014-02-05 18:24:49

我在另一种情况下也有同样的问题。您可以在这里看到它:https://stackoverflow.com/questions/21578458/return-asynch-data-to-method-android-java,我也在寻找解决方案,但目前还没有找到。

返回值没有得到结果的原因很简单。当您这样做时: client.get()将消息发送到服务器。在返回xmlResponse时,您的代码是不可更改的。返回后将调用onSucces方法,这是因为软件到达返回语句的速度比服务器返回来自异步调用的消息更快。

在我向您展示的主题中,这是一个解决方案。但这个解决方案不适合我计划申请的方式。也许它适合你的申请。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17229989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档