private static final String serviceNameSpace = "http://WebXml.com.cn/"; //命名空间
private static final String getSupportCity = "getSupportCity"; //将调用的WebSerice方法
private static final String serviceURL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx"; //将访问的WSDL路径
// 实例化SoapObject对象(如:信)
SoapObject request = new SoapObject(serviceNameSpace,getSupportCity);
//为SOAP对象添加参数
request.addProperty("byProvinceName","北京");
// 获得序列化的Envelope(如:信封) (并指定SOAP版本SoapEnvelope.VER11)
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置要发送的SOAP对象(信)
envelope.setoutputSoapObject(request); 或 envelope.bodyOut = request;
//网络传输
envelope.dotNet = true;
// 注册Envelope (视乎不注册也可)
(new MarshalBase64()).register(envelope);
//设置传输对象,并传入要访问的WSDL路径(如:邮局)
HttpTransportSE ht = new HttpTransportSE(serviceURL); 或 AndroidHttpTransport ht=new AndroidHttpTransport(serviceURL);
//设置调试打开,在debug时 才可以看到发生的XML和收到的XML具体信息
ht.debug = true;
// 调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象):
ht.call(serviceNameSpace + getSupportCity,envelope);
//判断是否访问成功
if (envelope.getResponse() != null) {
//获得返回的SOAP对象
try {
SoapObject sb =(SoapObject)envelope.bodyIn;
//实现PULL解析对结果进行解析
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser pullParser = factory.newPullParser();
StringReader reader = new StringReader(sb.getProperty(0).toString());
pullParser.setInput(reader);
int eventType = pullParser.getEventType();
//开始解析
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.TEXT:
System.out.println(pullParser.getText());
break;
}
eventType = pullParser.next();
}
} catch (XmlPullParserException e1) {
e1.printstacktrace();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。