簡體   English   中英

PHP nusoap轉Java復雜變量

[英]PHP nusoap to java complex variables

我試圖將2個字符串從我的php nusoap服務器傳遞回我的ksoap2客戶端,但ksoap2並未將nusoap的響應拆分為不同的屬性。

這是在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類將值從響應中拉出。

這是我的代碼竊賊。

        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());

我猜我在吠錯樹。 我根本不需要ArrayOfStrings類將值從響應中拉出。

這是我的代碼竊賊。

    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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM