[英]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 ('A1','M1','E1','AT333AT333','9055627513','2012-02-02 02:02:02','2012-02-02 02:02:02','-454545.343434','434343.232323','A334A334A334A443X','1000000','3434')
</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.