Я реализовал свой веб-сервис SOAP после учебника, найденного на веб-сайте разработчиков Google, и теперь я пишу приложение для Android, которое вызывает доступную услугу и показывает результат (теперь в текстовом виде) используя библиотеки ksoap2. Вот код:Результат вызова SoapObject всегда равен нулю
public class DownloadDataTask extends AsyncTask<Void, Void, SoapObject> {
private static String METHOD_NAME = "getData";
private static String SOAP_ACTION = "http://example.com/getData";
private static String WSDL_URL = "http://arduino-data-server.appspot.com/FunctionsService.wsdl";
private static String NAMESPACE = "http://example.com/";
private MainActivity caller_activity;
public DownloadDataTask(MainActivity a) {
caller_activity = a;
}
@Override
protected SoapObject doInBackground(Void... arg0) {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(WSDL_URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.getResponse();
return result;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(SoapObject result) {
TextView tw = (TextView) caller_activity.findViewById(R.id.text_view);
if (result == null) {
tw.setText("NULL");
} else {
tw.setText(result.getName());
}
}
}
, но каждый раз, результат SoapObject это нуль. что не так? на журнале сервера appengine я вижу, что приложение для Android запрашивает wsdl-файл, но запрос на обслуживание не отправляется. Что не так (wsdl-файл доступен для ввода URL-адреса внутри моего кода)?
ОК, спасибо. Таким образом, учебник ksoap2, за которым я следую, был неправильным .. Он сказал мне добавить URL-адрес wsdl, а не URL-адрес службы – giozh
Но проблема все еще остается, всегда null были возвращены webservice. Может быть, я ошибаюсь, когда создаю конверт с мылом? – giozh
Почему вы используете 'SoapEnvelope.VER12'? Wsdl содержит определение только для версии 1.1. Попробуйте изменить это на 'SoapEnvelope.VER11'. – esentsov