80,471
社区成员




public static final List<SoapObject> genHotelOrder(HotelOrder ho) {
byte[] bt = objectToByte(ho);
String data = org.kobjects.base64.Base64.encode(bt);//听网上说可以用byte[]方式传参,失败后也没完回来
String methodName = "hotelOrder()";
SoapObject request = new SoapObject(NAME_SPACE, methodName);
PropertyInfo pi = new PropertyInfo();
pi.setName("hotelOrder");
pi.setValue(data);
pi.setType(HotelOrder.class);
request.addProperty(pi);
return core(HOTEL_URL, request, methodName);
}
private final static List<SoapObject> core(String url, SoapObject request,
String methodname) {
try {
HttpTransportSE ht = new HttpTransportSE(url, 22000);// 设置超时时间22秒
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.addMapping(NAME_SPACE, "tns:hotelOrder",
new HotelOrder().getClass());
envelope.addMapping(NAME_SPACE, "tns:ArrayOfOrderRoomPrice",
new OrderRoomInfo().getClass());
envelope.setOutputSoapObject(request);
ht.call(NAME_SPACE + methodname, envelope);
/*下面是得到返回值后的解析,不在此问题范围内*/
request = (SoapObject) envelope.getResponse();
int resultCount = request.getPropertyCount();
List<SoapObject> soapObjects = new ArrayList<SoapObject>();
SoapObject subSO = null;
for (int i = 0; i < resultCount; i++) {
subSO = (SoapObject) request.getProperty(i);
soapObjects.add(subSO);
}
return soapObjects;
} catch (SocketTimeoutException e) {
e.printStackTrace();
return null;// 如果超时,让它返回null,以便告知user是网络问题而不是没有结果
} catch (IOException ea) {
ea.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
return null; // 理由同上
}
return null;
}