2013-09-03 2 views
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을 쓰십시오)?

답변

1

Ksoap은 wsdl을 사용하지 않으므로 요청하지 않습니다. wsdl url 대신 service url을 전달해야합니다. wsdl에서 찾을 수있는 서비스 URL (서비스 설명 섹션의 address 요소의 location 요소)

+0

감사합니다. 그래서 제가 따르는 ksoap2 튜토리얼은 잘못되었습니다. 서비스 URL이 아닌 wsdl url을 추가하라고했습니다. – giozh

+0

하지만 문제는 여전히 남아 있으며, 항상 null이 webservice에 의해 반환되었습니다. 아마도 내가 비누 봉투를 만드는 동안 뭔가 잘못 됐어? – giozh

+1

왜 SoapEnvelope.VER12를 사용하고 있습니까? Wsdl에는 1.1 버전에 대한 정의 만 있습니다. 이것을 'SoapEnvelope.VER11'로 변경하십시오. – esentsov

관련 문제