首页Androidandroid技术 › Android 连接Webservice

Android 连接Webservice

【准备】
 1、找到可测试的webservice服务

http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx

页面中有以下信息:

======================================================

getWeather

获得天气预报数据

输入参数:城市/地区ID或名称,返回数据:一维字符串数组

=====================================================

点击getWeather

http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?op=getWeather

从上述页面可以获取以下信息:

SOAPAction: "http://WebXml.com.cn/getWeather"

<getWeather xmlns="http://WebXml.com.cn/">其中xmlns就是NAMESPACE

以及传送参数名theCityCode

2、创建android项目

Action类的onCreate方法中实现连接webservice功能

 

3、在项目中加入第三方包ksoap

下载地址:

http://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.5.4/ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar

点击View raw file 下载

然后在项目中加入第三方包

 

【实现android连接webservice功能】
1、       创建字段

// 名空间

private static final String NAMESPACE   = "http://WebXml.com.cn/";

// 网址

private static String       URL         = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";

// 方法名

private static final String METHOD_NAME = "getWeather";

// SOAPACTION

private static String       SOAP_ACTION = "http://WebXml.com.cn/getWeather";

 

2、       获取Soap对象并设置传送参数值

SoapObject rpc = new SoapObject(NAMESPACEMETHOD_NAME);

rpc.addProperty("theCityCode", cityName);

 

3、    创建SoapSerializationEnvelope对象

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut = rpc;

envelope.dotNet = true;

envelope.setOutputSoapObject(rpc);

其中SoapEnvelope.VER11是指SOAP 1.1

 

4、创建HttpTransportsSE对象

HttpTransportSE ht = new HttpTransportSE(URL);

ht.debug = true;

 

5、使用call方法调用WebService方法

ht.call(SOAP_ACTION, envelope);

 

6、获得WebService方法的返回结果

方法一:

detail =(SoapObject) envelope.getResponse();

方法二:

SoapObject result = (SoapObject)envelope.bodyIn;

detail = (SoapObject) result.getProperty("getWeatherbyCityNameResult");

 

7、解析SoapObject对象

for (int i = 0; i < detail.getPropertyCount(); i++) {

    System.out.println("detail.getProperty(" + i + ")"                        + detail.getProperty(i));

}

 

8、设置访问网络的权限

AndroidManifest.xml 文件中加入uses-permission项,如下:

<manifest ...>

    <application ...>

        ...

    </application>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

</manifest>

【小技巧】
1、 如何查看System.out.println显示的结果

eclipse中,窗口》显示视图》其他android—LogCat

 

转载本站文章请注明出处:就是他吧 http://www.94taba.com/?p=374

上一篇:

下一篇: