gpt4 book ai didi

java - 在 Android 上使用多个 Web 服务

转载 作者:行者123 更新时间:2023-11-30 03:22:28 24 4
gpt4 key购买 nike

我正在创建一个 Android 应用程序,我需要使用多个 Web 服务,为了在同一 Activity 上调用不同的 Web 服务,是否需要考虑什么?最好的方法是什么?我已经为 IOS (Objective-C) 做了这个,我所做的是创建不同的 NSObject 类来调用不同的 Web 服务,一切工作正常。 Java 也会一样吗?

我现在读到的内容是 Ksoap2这似乎非常适合我的需要,但我想听听其他人的意见。

编辑:

我需要知道的是,我是否需要为每个 url 创建多个异步任务,或者创建一个类来下载每个 json 数据,然后在回调方法上解析它。最好的解决方案是什么?

最佳答案

调用远程服务时需要记住几个方面:首先,你不能在主线程中调用 Web 服务,因为如果服务器响应时间太长,Android 将杀死你的应用程序:ANR(应用程序未响应)。 您应该在单独的线程中调用。您可以使用AsyncTask,但它可能会出现内存泄漏,因此请注意这一点。还有其他解决方案:

  1. Volley是发出HTTP请求的最佳方式之一,它在单独的线程中运行请求,您不必担心ANR问题
  2. OkHTTP 是另一个处理 HTTP 请求和响应的流行库

当需要解析响应时,有几种方法。如果响应易于解析,您可以手动实现逻辑,或者您可以使用 Gson。你可以看看here .

如果你想使用 Volley ,你应该:

 private RequestQueue queue;

public void init(Context ctx) {
queue = Volley.newRequestQueue(ctx);
}

..

StringRequest req = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String data) {
// Parse here if you parse the response manually
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//handle error
}
}
);

queue.add(req); // Add request to queue

希望对你有帮助

关于java - 在 Android 上使用多个 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31021889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com