Java 在Android上使用多个Web服务
我正在创建一个android应用程序,我需要使用多个Web服务,为了在同一活动中调用不同的Web服务,有什么需要考虑的吗?这样做的最佳方法是什么? 我已经为IOS(Objective-C)做了这项工作,我所做的是创建不同的NSObject类,以便调用不同的Web服务,并且一切正常。Java也会这样吗 我发现现在阅读的内容似乎非常适合我的需要,但我想听听其他人的意见 编辑: 我需要知道的是,我是否需要为我的每个url创建多个异步任务,或者创建一个类来下载每个json数据,然后在回调方法上解析它。Java 在Android上使用多个Web服务,java,web-services,Java,Web Services,我正在创建一个android应用程序,我需要使用多个Web服务,为了在同一活动中调用不同的Web服务,有什么需要考虑的吗?这样做的最佳方法是什么? 我已经为IOS(Objective-C)做了这项工作,我所做的是创建不同的NSObject类,以便调用不同的Web服务,并且一切正常。Java也会这样吗 我发现现在阅读的内容似乎非常适合我的需要,但我想听听其他人的意见 编辑: 我需要知道的是,我是否需要为我的每个url创建多个异步任务,或者创建一个类来下载每个json数据,然后在回调方法上解析它。
什么是最好的解决方案?以下是我认为应该记住的一些事情 异步调用web服务。 如果在一个活动中调用多个web服务,这将提高性能。 您可以在using中进行每个调用,也可以使用
AsyncHTTPClient
使用或从JSON转到java POJO实例。
这样可以避免手动或使用低级JSON API解析JSON。调用远程服务时需要记住以下几个方面: 首先,你不能在主线程中调用webservice,因为如果服务器的响应时间太长,Android将终止你的应用程序: ANR(应用程序无响应)。 你应该调用一个单独的线程。您可以使用AsyncTask,但它可能会出现内存泄漏,因此请注意。还有其他解决方案:
private RequestQueue queue;
public void init(Context ctx) {
queue = Volley.newRequestQueue(ctx);
}
StringRequest req=新的StringRequest(Request.Method.GET,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串数据){
//如果手动解析响应,请在此处进行解析
}
},
新的Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
//处理错误
}
}
);
队列。添加(请求);//将请求添加到队列
希望对您有所帮助您正在使用的web服务是基于SOAP的吗?@Simon抱歉,我忘了提一下。。我使用的是REST-Json Webservices我不知道Ksoap2,但它看起来是用于SOAP的,而不是REST。如果您熟悉它,我更喜欢java的spring工具,我应该推荐spring的REST客户端,尽管我自己还没有在android上测试它的性能(您必须检查初始化模板需要多少时间),它应该适合你的需要,异步轻快的编码,看看吧:谢谢你的解释!最后一个问题,你能解释一下Java是如何处理多个Web服务调用的吗?因为我担心如果我没有选择正确的方法来解决这个问题,我会在我的代码截取上出现大量的异常,这似乎是最好的解决方案。最后一件事,如果我必须在同一个活动上调用多个Web服务,我应该怎么做?连接多个队列?例如,在onResponse方法上调用下一个webservice?如果可能的话,我更愿意当前调用它们。如果你必须将从上一个WS中提取的数据传递给下一个WS,你可以使用你的方法。是的,我必须传递上一个WS中的数据。我要试试这个方法!
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