KSOAP2 访问WebService

本文介绍了一种通过Java调用WebService的方法来获取支持的城市列表的过程。具体步骤包括实例化SoapObject,设置请求参数,创建SoapSerializationEnvelope,设置HTTP传输方式及调试信息,并最终解析返回的XML数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值