AsyncTaskを使用してWebサービスを呼び出し、その応答を編集します。
私は自分のタスクを次のように呼びます。
new CallWebService().execute(et.getText().toString().trim());
ここで、etはユーザーが電話番号(String)を指定するEditTextです。したがって、文字列パラメーターをexecuteメソッドに渡します。
次に、AsyncTaskを拡張するCallWebServiceクラスで、指定された文字列を取得し、それをWebサービス呼び出しのパラメーターとして使用します。
private class CallWebService extends AsyncTask<String, Void, Object>
doInBackroundメソッドのコード:
@Override
protected Object doInBackground(String... phone) {
Object result = null;
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
// if i put "6949861372" manually at the second parametre it works!
request.addProperty("phone", phone);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
result = envelope.getResponse();
} catch (Exception e) {
//do nothing
}
return result;
}
「6949861372」を2番目のパラメータ((文字列)電話)に手動で配置すると、機能します!では、ここで何が問題になっていますか?では、editTextからdoInBackgroundメソッドに指定された番号を渡すにはどうすればよいですか?
わからない!!