2012-05-07 3 views
1

이 요청 봉투처럼 보이게하는 방법입니다 :ksoap2 중첩 된 항목은

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> 
    <v:Header /> 
    <v:Body> 
    <getLijst xmlns="http://OAM/OMZETAPPMETHODS.xsd"> 
     <selectie i:type="n1:OAM_ArtstructselobjUser" xmlns:n1="http://OAM/OMZETAPPMETHODS.xsd"> 
     <filiaal i:type="d:decimal">4</filiaal> 
     <artnivsel i:type="n1:OAM_ArtstructobjUser"> 
      <asonummer i:type="d:decimal">1</asonummer> 
      <asotype i:type="d:string">P</asotype> 
     </artnivsel> 
     </selectie> 
    </getLijst> 
    </v:Body> 
</v:Envelope> 

그리고 이것은 내 코드의 일부이다 :

String nameSpace = "http://OAM/OMZETAPPMETHODS.xsd"; 
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.dotNet = true; 
envelope.setAddAdornments(false); 
SoapObject request = new SoapObject(nameSpace, _soapMethod); 

OAM_ArtstructselobjUser obj = new OAM_ArtstructselobjUser(); 
// .. This is where the properties are added, irrelevant 
request.addProperty("selectie", obj); 

OAM_ArtstructobjUser obj2 = new OAM_ArtstructobjUser(); 
// .. This is where the properties are added, irrelevant 
request.addProperty("artnivsel", obj2); 

envelope.setOutputSoapObject(request); 

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

envelope.addMapping(nameSpace, "OAM_ArtstructselobjUser", OAM_ArtstructselobjUser.class); 
envelope.addMapping(nameSpace, "OAM_ArtstructobjUser", OAM_ArtstructobjUser.class);  

그래서 난에 artnivsel을 원하는

사용자 지정 형식이 있지만 selectie의 네임 스페이스를 상속합니다. 나는 위의 코드를 실행 경우 내가 무엇에 두 번째 addMappingnameSpace을 변경하면 내가 05-07 14:22:21.034: ERROR/AndroidRuntime(16417): Caused by: java.lang.RuntimeException: Unknown Property: asotype

를 얻을, 내 코드는 잘 실행됩니다. 하지만 내 봉투 XML이 올바르지 않습니다. 더 이상.

나에게 포인터를 줄 수있는 사람이라면 누구나 ksoap2 나 비누에 익숙하지 않은 사람 일 것입니다.

답변

1

좋아요. ksoap2.6.4로 업데이트하면 문제가 해결됩니다. SoapSerializationEnvelope

에 ~ true을 그냥 추가하십시오.
관련 문제