私は、アプリケーションを通してさまざまな時間ウェブサービスを呼び出すアンドロイドアプリケーションを持っています。 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;] 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);
レスポンスが必要な場合にfaultyに使用されるtoStringのように見えますか? – Tobias
実際、はい、私はオブジェクトとして応答を取るし、.toString()を使用しますが、それは私もAsyncTaskの外でやっていることです。どのように私はそれを克服するのですか? – Athan
これで、空のオブジェクトに対してtoString()を呼び出さなければなりません(応答前の実行が利用可能であるため)。この問題の関連コードでうまくいくでしょう。それを理解することが難しくありません:) – Tobias