我有一个android应用程序,在整个应用程序中调用web服务不同时间。由于调用ksoap2方法会使应用程序不响应,所以我必须将整个事件放入AsyncTask类中。android ksoap2响应问题
我所做的就是在onPreExecute()上创建一个ProgressDialog,并调用doInBackground上的Web服务,就像在我的主程序中完成的一样。但是,虽然对Web服务的调用有效,但来自Web服务的响应是“[email protected]”。 FYI com.SmartInfinity是我的应用程序包,InfinityMain是我的主要活动,webServiceCall是调用Web服务的方法。
有没有人知道为什么会发生这种情况? Web服务应该返回结果为 “[field_x1 = value_x1; field_y1 = value + y1; field_x2 = value_x2; field_y2 = value_y2;]” 当我用AsyncTask之外的相同参数调用相同的函数时,它完美地起作用。
感谢您的帮助。
编辑:这里是我的代码:
private class webServiceCall extends AsyncTask<String, Void, Object>
{
@Override
protected void onPreExecute()
{
dialog.show();
}
protected Object onPostExecute(Object... params)
{
dialog.dismiss();
return params;
}
@Override
protected Object doInBackground(String... params)
{
Object result = null;
String[] temp = new String[params.length - 2];
String method_name = params[0];
String action_name = params[1];
for (int i = 2; i < params.length; i++)
{
temp[i-2] = params[i];
}
result = callWebService(method_name, action_name, temp, 60);
dialog.dismiss();
return result;
}
}
然后将结果转换为字符串和正常使用。 这里是我叫的AsyncTask和处理我的结果:
Object result = new webServiceCall().execute(UserArgs);
String str = result.toString();
String delims = "[=;]+";
String [] stringuser = str.split(delims);
看起来像是一个toString,如果您想要响应,则使用错误? – Tobias
实际上,我确实将响应作为一个对象并使用.toString(),但这也是我在AsyncTask之外所做的,并且它工作正常。我如何克服这一点? – Athan
然后,必须在空对象上调用toString()(因为它在响应可用之前运行?)对于此问题的相关代码会很好。不应该太难找出:) – Tobias