2014-05-13 2 views
0

웹 서비스에 Ksoap2 라이브러리를 사용하고 kvmserializable을 사용하여 복잡한 매개 변수를 웹 서비스 m에 전달합니다. 이 오류가 발생하고 잘못 뭐하는 거지 왜 내가 많이 검색 그러나 어떤 해결책을 찾을 수 없습니다이 예외웹 서비스에 복합 매개 변수 전달

05-13 13:38:00.644: W/System.err(26739): SoapFault - faultcode: 'SOAP-ENV:Server' faultstring: 'Error Type: SYSTEM NOTICE, 
05-13 13:38:00.644: W/System.err(26739): Error Description: Undefined index: project' faultactor: 'null' detail: null 
05-13 13:38:00.644: W/System.err(26739): at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:147) 
05-13 13:38:00.655: W/System.err(26739): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140) 
05-13 13:38:00.655: W/System.err(26739): at org.ksoap2.transport.Transport.parseResponse(Transport.java:118) 
05-13 13:38:00.685: W/System.err(26739): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:275) 
05-13 13:38:00.724: W/System.err(26739): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118) 
05-13 13:38:00.724: W/System.err(26739): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113) 
05-13 13:38:00.734: W/System.err(26739): at com.example.login2.MainActivity$AsyncTaskRunner.doInBackground(MainActivity.java:86) 
05-13 13:38:00.784: W/System.err(26739): at com.example.login2.MainActivity$AsyncTaskRunner.doInBackground(MainActivity.java:1) 
05-13 13:38:00.821: W/System.err(26739): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
05-13 13:38:00.821: W/System.err(26739): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
05-13 13:38:00.858: W/System.err(26739): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
05-13 13:38:00.858: W/System.err(26739): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
05-13 13:38:00.894: W/System.err(26739): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
05-13 13:38:00.894: W/System.err(26739): at java.lang.Thread.run(Thread.java:1019) 
05-13 13:38:00.924: E/ErrorResp:(26739): SoapFault - faultcode: 'SOAP-ENV:Server' faultstring: 'Error Type: SYSTEM NOTICE, 
05-13 13:38:00.924: E/ErrorResp:(26739): Error Description: Undefined index: project' faultactor: 'null' detail: null 

을 얻고, 설명해주십시오. 도와주세요. ksoap2의

답변

0

는 내 질문에 대한 해결책을 발견했다.

사실 저는 프로젝트 필드에 대한 매개 변수를 전달하지 않았습니다. 프로젝트 필드는 필수 항목입니다. :)

0

를 사용하여 새 버전 :(http://code.google.com/p/ksoap2-android/)

private SoapObject getSoapResponse(SoapObject request, String url, String soapAction) { 
    Log.d(TAG, "inside getSoapResponse"); 
    SoapObject response = null;  
    try {   
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = false; 

     Marshal dateMarshal = new MarshalDate(); 
     dateMarshal.register(envelope); 

     MarshalFloat floatMarshal = new MarshalFloat(); 
     floatMarshal.register(envelope); 

     envelope.setOutputSoapObject(request);   

     HttpTransportSE androidHttpTransport = new HttpTransportSE(url); 
     androidHttpTransport.call(soapAction, envelope); 
     response = (SoapObject)envelope.bodyIn; 
    } catch (SoapFault sfe) { 
     Log.d(TAG, " SoapFault "); 
     sfe.printStackTrace(); 
    } catch (IOException ioe) { 
     Log.d(TAG, " IOException "); 
     ioe.printStackTrace(); 
    } catch (XmlPullParserException xppe) { 
     Log.d(TAG, " XmlPullParserException "); 
     xppe.printStackTrace(); 
    } 

    return response; 
} 

은 또한 요청에 대해 사용 :

SoapObject request = new SoapObject(namespace, method); 

PropertyInfo name = new PropertyInfo(); 
name.setName(RequestInfo.PROPERTY_LOGIN_TYPE); 
name.setValue("jhon"); 
name.setType(String.class); 
request.addProperty(name); 

PropertyInfo location = new PropertyInfo(); 
location.setName("Bangalore"); 
location.setValue(facebookUserName);    
location.setType(String.class); 
request.addProperty(location); 

SoapObject response = getSoapResponse(request, url, soap_action); 

if (response != null) { 
    //parse the XML file here. 
} 
+0

당신은 그 오류를 얻는 이유를 설명 할 수 있습니까? –

+0

마샬링되지 않은 요청이있을 수 있습니다. –

+0

마샬을 사용하고 있음을 표시 dateMarshal = new MarshalDate(); dateMarshal.register (envelope); MarshalFloat floatMarshal = new MarshalFloat(); floatMarshal.register (envelope); –

관련 문제