Android与服务器端数据交互Word下载.docx

上传人:b****6 文档编号:17981233 上传时间:2022-12-12 格式:DOCX 页数:15 大小:414.61KB
下载 相关 举报
Android与服务器端数据交互Word下载.docx_第1页
第1页 / 共15页
Android与服务器端数据交互Word下载.docx_第2页
第2页 / 共15页
Android与服务器端数据交互Word下载.docx_第3页
第3页 / 共15页
Android与服务器端数据交互Word下载.docx_第4页
第4页 / 共15页
Android与服务器端数据交互Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Android与服务器端数据交互Word下载.docx

《Android与服务器端数据交互Word下载.docx》由会员分享,可在线阅读,更多相关《Android与服务器端数据交互Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

Android与服务器端数据交互Word下载.docx

//WebX

//调用方法(获得支持的城市)

privatestaticfinalStringgetSupportCity="

getSupportCity"

;

//实例化SoapObject对象

SoapObjectrequest=newSoapObject(serviceNameSpace,getSupportCity);

第二步:

假设方法有参数的话,设置调用方法参数:

request.addProperty("

参数名称"

"

参数值"

);

  第三步:

设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致):

//获得序列化的Envelope

SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut=request;

  第四步:

注册Envelope:

(newMarshalBase64()).register(envelope);

  第五步:

构建传输对象,并指明WSDL文档URL:

//请求URL

privatestaticfinalStringserviceURL="

//Android传输对象

AndroidHttpTransporttransport=newAndroidHttpTransport(serviceURL);

transport.debug=true;

  第六步:

调用WebService(其中参数为1:

命名空间+方法名称,2:

Envelope对象):

transport.call(serviceNameSpace+getWeatherbyCityName,envelope);

  第七步:

解析返回数据:

if(envelope.getResponse()!

=null){

returnparse(envelope.bodyIn.toString());

}

/**************

*解析XML

*@paramstr

*@return

*/

privatestaticList<

String>

parse(Stringstr){

Stringtemp;

List<

list=newArrayList<

();

if(str!

=null&

&

str.length()>

0){

intstart=str.indexOf("

string"

intend=str.lastIndexOf("

"

temp=str.substring(start,end-3);

String[]test=temp.split("

for(inti=0;

i<

test.length;

i++){

if(i==0){

temp=test[i].substring(7);

}else{

temp=test[i].substring(8);

intindex=temp.indexOf("

list.add(temp.substring(0,index));

returnlist;

  这样就成功啦。

那么现在我们就来测试下吧,这里有个地址提供webService天气预报的服务的,我这里只提供获取城市列表:

//调用城市的方法(需要带参数)

privatestaticfinalStringgetWeatherbyCityName="

getWeatherbyCityName"

//调用省或者直辖市的方法(获得支持的省份或直辖市)

privatestaticfinalStringgetSupportProvince="

getSupportProvince"

  然后你可以在浏览器中输入地址(WSDL):

serviceURL,你会看到一些可供调用的方法:

  我们选择获取国内外主要城市或者省份的方法吧:

getSupportProvice,然后调用,你会发现浏览器返回给我们的是xml文档:

<

?

xmlversion="

1.0"

encoding="

utf-8"

?

>

-<

ArrayOfStringxmlns:

xsi="

//www.w3.org/2001/XMLSchema-instance"

xmlns:

xsd="

//www.w3.org/2001/XMLSchema"

xmlns="

<

string>

直辖市<

/string>

特别行政区<

黑龙江<

吉林<

辽宁<

内蒙古<

河北<

河南<

山东<

山西<

江苏<

安徽<

陕西<

宁夏<

甘肃<

青海<

湖北<

湖南<

浙江<

江西<

福建<

贵州<

四川<

广东<

广西<

云南<

海南<

新疆<

西藏<

台湾<

亚洲<

欧洲<

非洲<

北美洲<

南美洲<

大洋洲<

/ArrayOfString>

  我们可以用listview来显示:

  那么下面我将给出全部代码:

publicclassWebServiceHelper{

//WSDL文档中的命名空间

privatestaticfinalStringtargetNameSpace="

//WSDL文档中的URL

privatestaticfinalStringWSDL="

//需要调用的方法名(获得本天气预报WebServices支持的洲、国内外省份和城市信息)

privatestaticfinalStringgetSupportProvince="

//需要调用的方法名(获得本天气预报WebServices支持的城市信息,根据省份查询城市集合:

带参数)

privatestaticfinalStringgetSupportCity="

//根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数

privatestaticfinalStringgetWeatherbyCityName="

/********

*获得州,国内外省份和城市信息

publicList<

getProvince(){

provinces=newArrayList<

Stringstr="

SoapObjectsoapObject=newSoapObject(targetNameSpace,getSupportProvince);

//request.addProperty("

参数"

"

调用的方法参数与参数值(根据具体需要可选可不选)

SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet=true;

envelope.setOutputSoapObject(soapObject);

//envelope.bodyOut=request;

AndroidHttpTransporthttpTranstation=newAndroidHttpTransport(WSDL);

//或者HttpTransportSEhttpTranstation=newHttpTransportSE(WSDL);

try{

httpTranstation.call(targetNameSpace+getSupportProvince,envelope);

SoapObjectresult=(SoapObject)envelope.getResponse();

//下面对结果进行解析,结构类似json对象

//str=(String)result.getProperty(6).toString();

intcount=result.getPropertyCount();

for(intindex=0;

index<

count;

index++){

provinces.add(result.getProperty(index).toString());

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(XmlPullParserExceptione){

}

returnprovinces;

/**********

*根据省份或者直辖市获取天气预报所支持的城市集合

*@paramprovince

getCitys(Stringprovince){

citys=newArrayList<

SoapObjectsoapObject=newSoapObject(targetNameSpace,getSupportCity);

soapObject.addProperty("

byProvinceName"

province);

AndroidHttpTransporthttpTransport=newAndroidHttpTransport(WSDL);

httpTransport.call(targetNameSpace+getSupportCity,envelope);

citys.add(result.getProperty(index).toString());

returncitys;

/***************************

*根据城市信息获取天气预报信息

*@paramcity

***************************/

publicWeatherBeangetWeatherByCity(Stringcity){

WeatherBeanbean=newWeatherBean();

SoapObjectsoapObject=newSoapObject(targetNameSpace,getWeatherbyCityName);

theCityName"

city);

//调用的方法参数与参数值(根据具体需要可选可不选)

httpTranstation.call(targetNameSpace+getWeatherbyCityName,envelope);

bean=parserWeather(result);

returnbean;

/**

*解析返回的结果

*@paramsoapObject

protectedWeatherBeanparserWeather(SoapObjectsoapObject){

Map<

String,Object>

Map<

map=newHashMap<

//城市名

bean.setCityName(soapObject.getProperty

(1).toString());

//城市简介

bean.setCityDescription(soapObject.getProperty(soapObject.getPropertyCount()-1).toString());

//天气实况+建议

bean.setLiveWeather(soapObject.getProperty(10).toString()+"

\n"

+soapObject.getProperty(11).toString());

//其他数据

//日期,

Stringdate=soapObject.getProperty(6).toString();

//---------------------------------------------------

StringweatherToday="

今天:

+date.split("

"

)[0];

weatherToday+="

\n天气:

+date.split("

)[1];

\n气温:

+soapObject.getProperty(5).toString();

\n风力:

+soapObject.getProperty(7).toString();

Integer>

icons=newArrayList<

icons.add(parseIcon(soapObject.getProperty(8).toString()));

icons.add(parseIcon(soapObject.getProperty(9).toString()));

map.put("

weatherDay"

weatherToday);

icons"

icons);

list.add(map);

//-------------------------------------------------

date=soapObject.getProperty(13).toString();

StringweatherTomorrow="

明天:

weatherTomorrow+="

+soapObject.getProperty(12).toString();

+soapObject.getProperty(14).toString();

icons.add(parseIcon(soapObject.getProperty(15).toString()));

icons.add(parseIcon(soapObject.getProperty(16).toString()));

weatherTomorrow);

//--------------------------------------------------------------

date=soapObject.getProperty(18).toString();

StringweatherAfterTomorrow="

后天:

weatherAfterTo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1