웹 응용 프로그램을 여러 번 호출하는 안드로이드 응용 프로그램이 있습니다. ksoap2 메서드를 호출하면 응용 프로그램이 응답하지 않게되므로 모든 것을 AsyncTask 클래스에 넣어야했습니다.android ksoap2 응답 문제
내가 한 것은 내 주 프로그램에서했던 것처럼 onPreExecute()에 ProgressDialog를 표시하고 doInBackground에서 웹 서비스를 호출하는 것입니다. 그러나 웹 서비스에 대한 호출이 작동하더라도 웹 서비스의 응답은 "[email protected]"입니다. FYI com.SmartInfinity는 내 응용 프로그램 패키지이고 InfinityMain은 내 주요 활동이고 webServiceCall은 웹 서비스를 호출하는 메서드입니다.
왜 이런 일이 일어나는 지 아는 사람이 있습니까? 웹 서비스는 "[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);
응답을 원한다면 오류가있는 toString처럼 보입니까? – Tobias
사실 예, 응답을 객체로 사용하고 .toString()을 사용하지만, AsyncTask 외부에서 수행하는 작업도 마찬가지입니다. 어떻게 극복합니까? – Athan
비어있는 객체에서 toString()을 호출해야합니다 (응답 전에 실행되기 때문에 사용할 수 있습니까?).이 문제의 관련 코드가 좋을 것입니다. 알아 내기가 너무 어려워서는 안됩니다 :) – Tobias