0
Google 개발자 웹 사이트에서 찾은 자습서를 따라 SOAP SOAP 서비스를 구현했습니다. 이제 사용할 수있는 서비스를 호출하고 결과를 표시하는 Android 앱을 작성하고 있습니다 (지금은 텍스트 뷰에 있음) ksoap2 라이브러리 사용. 즉, 코드입니다 :서비스 호출의 SoapObject 결과는 항상 null입니다.
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());
}
}
}
하지만 매번, 결과는 널 (null)입니다 SoapObject. 뭐가 문제 야? appengine 서버 로그에서 안드로이드 앱이 wsdl 파일을 요청했지만 서비스에 대한 요청이 전송되지 않았 음을 알 수 있습니다. 무엇이 잘못 되었습니까 (wsdl 파일을 사용할 수 있습니까? 내 코드 안에 광고 URL을 쓰십시오)?
감사합니다. 그래서 제가 따르는 ksoap2 튜토리얼은 잘못되었습니다. 서비스 URL이 아닌 wsdl url을 추가하라고했습니다. – giozh
하지만 문제는 여전히 남아 있으며, 항상 null이 webservice에 의해 반환되었습니다. 아마도 내가 비누 봉투를 만드는 동안 뭔가 잘못 됐어? – giozh
왜 SoapEnvelope.VER12를 사용하고 있습니까? Wsdl에는 1.1 버전에 대한 정의 만 있습니다. 이것을 'SoapEnvelope.VER11'로 변경하십시오. – esentsov