我正在创建一个Android应用程序,我需要使用多个Web服务,为了在同一个活动上调用不同的Web服务,有什么需要考虑的吗?哪种方法最好? 我已经为IOS(Objective-C)做了这个,我做的是创建不同的NSObject类,以便调用不同的Web服务,一切正常。是否与Java相同?
我现在读到的是Ksoap2这似乎非常适合我的需要,但我想听听别人的意见。
修改
我需要知道的是,我是否需要为每个url创建多个异步任务,或创建一个下载每个json数据的类,然后在回调方法上解析它。 什么是最好的解决方案?
答案 0 :(得分:1)
以下是我认为应该记住的一些事情
异步调用Web服务。
如果您在一个活动中调用多个Web服务,这将提高您的性能。
您可以使用AsynchTask在HttpClient内进行每次通话,也可以使用AsyncHTTPClient
。
使用Jackson或Gson从JSON转到Java POJO实例。 这样可以避免手动或使用低级JSON API解析JSON。
答案 1 :(得分:1)
调用远程服务时要记住以下几个方面: 首先,你不能在主线程中调用webservice,因为如果服务器响应时间过长,那么Android会终止你的应用: ANR(应用程序无响应)。 你应该在一个单独的线程中调用。您可以使用 AsyncTask 但它可能会遭受内存泄漏,因此请注意它。还有其他解决方案:
当需要解析响应时,有几种方法。如果响应易于解析或者您可以使用 Gson ,则可以手动实现逻辑。你可以看看here。
如果你想使用排球,你应该:
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
希望它可以帮到你