Java 将对象数组发送到WebService
我想向WebService发送一个对象数组,但我得到了RuntimeException:无法序列化[myClass]。我尝试了许多创建请求的变体,但都不起作用 调用WebService的我的班级:Java 将对象数组发送到WebService,java,android,web-services,Java,Android,Web Services,我想向WebService发送一个对象数组,但我得到了RuntimeException:无法序列化[myClass]。我尝试了许多创建请求的变体,但都不起作用 调用WebService的我的班级: SoapObject request = new SoapObject(NAMESPACE, NAME); com.gt.android.webservice.model.LocationRecord[] table = convertObjects(locationRecords).
SoapObject request = new SoapObject(NAMESPACE, NAME);
com.gt.android.webservice.model.LocationRecord[] table = convertObjects(locationRecords).toArray(new com.gt.android.webservice.model.LocationRecord[locationRecords.size()]);
SoapObject root = new SoapObject(NAMESPACE, "locRecord");
for (com.gt.android.webservice.model.LocationRecord i : table){
root.addProperty("LocationRecord", i);
}
request.addSoapObject(root);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
envelope.addMapping(NAMESPACE, "LocationRecord", com.gt.android.webservice.model.LocationRecord.class);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION + NAME, envelope);
... }
首先:我必须将列表从一个类转换为另一个类(只需重写字段(以实现平面结构),然后我尝试生成根,添加每个字段,添加序列化、请求、映射,并至少发送请求。以下是webService结构:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SynchonizeLocations xmlns="http://tempuri.org/">
<locRecord>
<LocationRecord>
<id>int</id>
<logTime>dateTime</logTime>
<message>string</message>
<lt>double</lt>
<lg>double</lg>
<timestamp>dateTime</timestamp>
<sessionBestLocation>boolean</sessionBestLocation>
<number1>int</number1>
<number2>int</number2>
</LocationRecord>
<LocationRecord>
<id>int</id>
<logTime>dateTime</logTime>
<message>string</message>
<lt>double</lt>
<lg>double</lg>
<timestamp>dateTime</timestamp>
<sessionBestLocation>boolean</sessionBestLocation>
<number1>int</number1>
<number2>int</number2>
</LocationRecord>
</locRecord>
</SynchonizeLocations>
</soap:Body>
</soap:Envelope>
int
日期时间
一串
双重的
双重的
日期时间
布尔值
int
int
int
日期时间
一串
双重的
双重的
日期时间
布尔值
int
int
感谢您的帮助。您可以使用对象并将其转换为字符串
字符串json=gson.toJson(yourObject)
public class LocationRecordsHolder {
public LocationRecord[] table;
public LocationRecordsHolder(LocationRecord[] table) {
this.table = table;
}
// Convert object to String
public static String converToString(LocationRecordHolder obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
// Conver String to object
public static LocationRecordHolder convertFromString(String json) {
Gson gson = new Gson();
return gson.fromJson(br, LocationRecordsHolder.class);
}
}
你的类实现了可序列化吗?@PhilippSander是的,它实现了。所有包含的类也实现了可序列化吗?@PhilippSander是的,每个对象都实现了可序列化,它仍然在生成我的错误。我想知道创建XML树的错误。但是我的Web服务使用SOAP体系结构,可以改为使用JSON吗?检查部分3.字符串输出将采用Json结构