2012-07-24 2 views
0

phus nusoap 서버에서 ksoap2 클라이언트로 2 문자열을 되돌려 보내려고하지만 ksoap2가 nusoap의 응답을 다른 속성으로 분할하지 않습니다.PHP의 nusoap에서 Java 로의 복잡한 변수

다음은 Java에서 복잡한 객체를 만들기위한 클래스입니다.

import java.util.Hashtable; 


import org.ksoap2.serialization.KvmSerializable; 
import org.ksoap2.serialization.PropertyInfo; 


public class ArrayOfStrings implements KvmSerializable { 

    public String Status; 
    public String Data; 

    public ArrayOfStrings(){} 

    public ArrayOfStrings(String status, String data) { 
     Status=status; 
     Data=data; 
    } 

    @Override 
    public Object getProperty(int arg0) { 
     // TODO Auto-generated method stub 
     switch (arg0) { 
     case 0: 
      return Status; 
     case 1: 
      return Data; 
     } 
     return null; 
    } 

    @Override 
    public int getPropertyCount() { 
     // TODO Auto-generated method stub 
     return 2; 
    } 

    @Override 
    public void getPropertyInfo(int index, Hashtable hashtbl, PropertyInfo pi) { 
     // TODO Auto-generated method stub 
     switch (index) { 
     case 0: 
     pi.type=PropertyInfo.STRING_CLASS; 
     pi.name="Status"; 
     break; 
     case 1: 
     pi.type=PropertyInfo.STRING_CLASS; 
     pi.name="Data"; 
     default: break; 
     } 
    } 

    @Override 
    public void setProperty(int index, Object o) { 
     // TODO Auto-generated method stub 
     switch (index) { 
     case 0: 
      Status = o.toString(); 
      break; 
     case 1: 
      Data = o.toString(); 
      break; 
     default: break; 
     } 
    } 

} 

다음은 PHP nusoap에 complexType을 추가하는 코드입니다.

$server->wsdl->addComplexType("ArrayOfStrings", 
     "complexType", 
     "struct", 
     "", 
     "SOAP-ENC:Array", 
     array('Status'=> array('name' => 'Status', 'type' => 'xsd:string'), 
       'Data'=> array('name' => 'Data', 'type' => 'xsd:string')) 
); 

$server->register("appswitch",  
     array( "app" => "xsd:string", 
       "content" => "xsd:string"), 
     array("ArrayOfStrings" => "tns:ArrayOfStrings"), 
     "urn:webservices", 
     "urn:Submit#appswitch", 
     "rpc", 
     "encoded", 
     "G4Apps Webservices Gateway"); 

아이디어가 있으십니까?

편집 : 여기에 PHP에서 비누 응답 (. 예, 그것이 오류 호스트 공급자가 문제가되는 알고)

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:webservices"> 
<SOAP-ENV:Body> 
    <ns1:appswitchResponse xmlns:ns1="http://secure.g4apps.com/webservices/"> 
     <return xsi:type="tns:ArrayOfStrings"> 
      <Status xsi:type="xsd:string">error</Status> 
      <Data xsi:type="xsd:string"> 
       Soap Service failed to insert data: 
       INSERT INTO phonelog (AppID,TransactionType, TransactionSubType, VirtualTagNo, SmartphoneID, TimeStampEvent, TimeStampLog, GPSLat, GPSLong, TruckID, TruckOdometer, TruckEngType) 
       VALUES (&apos;A1&apos;,&apos;M1&apos;,&apos;E1&apos;,&apos;AT333AT333&apos;,&apos;9055627513&apos;,&apos;2012-02-02 02:02:02&apos;,&apos;2012-02-02 02:02:02&apos;,&apos;-454545.343434&apos;,&apos;434343.232323&apos;,&apos;A334A334A334A443X&apos;,&apos;1000000&apos;,&apos;3434&apos;) 
      </Data> 
     </return> 
    </ns1:appswitchResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

내가 잘못 짚었되었다 생각합니다. 내 응답에서 값을 가져 오려면 ArrayOfStrings 클래스가 필요하지 않습니다.

heres my code snipit.

 SoapObject ks= (SoapObject)env.bodyIn; 
     SoapObject inner = (SoapObject)ks.getProperty("return"); 
     String Status = inner.getProperty("Status").toString(); 
     String Data = inner.getProperty("Data").toString(); 


     //System.out.println(ht.requestDump); 
     //System.out.println(ht.responseDump); 

     System.out.println(Status.trim()); 
     System.out.println(Data.trim()); 

답변

0

나는 잘못된 나무를 짖고 있었다고 생각합니다. 내 응답에서 값을 가져 오려면 ArrayOfStrings 클래스가 필요하지 않습니다.

heres my code snipit.

SoapObject ks= (SoapObject)env.bodyIn; 
    SoapObject inner = (SoapObject)ks.getProperty("return"); 
    String Status = inner.getProperty("Status").toString(); 
    String Data = inner.getProperty("Data").toString(); 


    //System.out.println(ht.requestDump); 
    //System.out.println(ht.responseDump); 

    System.out.println(Status.trim()); 
    System.out.println(Data.trim());