Android:服务器访问WebService的使用
2013-09-22 09:51
435 查看
转自:/article/7796770.html
首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。详细见:http://baike.baidu.com/view/837392.htm#sub837392
Android中访问WebService总结有两种:
1、通过链接 2、通过第三方类库
先说说第一种:
比较简单贴代码了:
很简单不多说了还可以用HttpPost加HttpResponse的方式。
第二种:
需要下载一个第三方Jar包:ksoap2
下载地址:http://ksoap2-android.googlecode.com/svn-history/r575/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.5.4/ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar
相比旧版本增强了网络链接等等同时用HttpTransportSE
替代了AndroidHttpTransport
,建议用新版本
下载后导入工程,不多解释了
1. 指定WebService的命名空间和调用的方法名,代码如下:
SoapObject request = new SoapObject("http://service", "getName");
2. 设置调用方法的参数值,如果方法没有参数,可以省略这一步。设置方法的参数值的代码如下:
request.addProperty("m1", "v1");
request.addProperty("m2", "v2");
3. 生成调用WebService方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述,代码如下:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = request;
如果是.NET的WebService还需加:
4. 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL,代码如下:
HttpTransportSE ht = new HttpTransportSE("http://192.168.1.55/PosWebServices/WebUI.asmx?wsdl");
HttpTransportSE.dotNet=true;
5. 使用call方法调用WebService方法,代码如下:
ht.call(null, envelope); call方法的第1个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象。
6. 使用getResponse方法获得WebService方法的返回结果,代码如下:
SoapObject soapObject = (SoapObject) envelope.getResponse();
7.取值
soapObject.getProperty("这个名字你懂的");
首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。详细见:http://baike.baidu.com/view/837392.htm#sub837392
Android中访问WebService总结有两种:
1、通过链接 2、通过第三方类库
先说说第一种:
比较简单贴代码了:
final String SERVER_URL = "http://192.168.1.55/PosWebServices/WebUI.asmx"; // 定义需要获取的内容来源地址 URL url = new URL(SERVER_URL); URLConnection con = url.openConnection(); //一些请求设置 con.setDoOutput(true); con.setRequestProperty("Pragma:", "no-cache"); con.setRequestProperty("Cache-Control", "no-cache"); con.setRequestProperty("Content-Type", "text/xml"); OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream()); out.write(new String(xmlInfo.getBytes("UTF-8"))); //这里可以发参数的,字符串应该是XML格式的 out.flush(); out.close(); // 取返回值 BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); StringBuilder sBuilder = new StringBuilder(); String line = ""; for (line = br.readLine(); line != null; line = br.readLine()) { sBuilder.append(line); } // 解析XML Pattern patternname = Pattern.compile("<Name>.*?</Name>"); Matcher matchername = patternname.matcher(sBuilder.toString()); if (matchername.find()) { String name = matchername.group(); TextView lblname = (TextView) findViewById(R.id.lbl_name); lblname.setText(URLDecoder.decode(name.substring(name.indexOf(">") + 1, name.lastIndexOf("<")))); } Pattern patternage = Pattern.compile("<Age>.*?</Age>"); Matcher matcherage = patternage.matcher(sBuilder.toString()); if (matcherage.find()) { String age = matcherage.group(); TextView lblage = (TextView) findViewById(R.id.lbl_age); lblage.setText(age.substring(age.indexOf(">") + 1, age.lastIndexOf("<"))); } } catch (Exception e) { String str = e.getMessage(); }
很简单不多说了还可以用HttpPost加HttpResponse的方式。
第二种:
需要下载一个第三方Jar包:ksoap2
下载地址:http://ksoap2-android.googlecode.com/svn-history/r575/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.5.4/ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar
相比旧版本增强了网络链接等等同时用HttpTransportSE
替代了AndroidHttpTransport
,建议用新版本
下载后导入工程,不多解释了
1. 指定WebService的命名空间和调用的方法名,代码如下:
SoapObject request = new SoapObject("http://service", "getName");
2. 设置调用方法的参数值,如果方法没有参数,可以省略这一步。设置方法的参数值的代码如下:
request.addProperty("m1", "v1");
request.addProperty("m2", "v2");
3. 生成调用WebService方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述,代码如下:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = request;
如果是.NET的WebService还需加:
4. 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL,代码如下:
HttpTransportSE ht = new HttpTransportSE("http://192.168.1.55/PosWebServices/WebUI.asmx?wsdl");
HttpTransportSE.dotNet=true;
5. 使用call方法调用WebService方法,代码如下:
ht.call(null, envelope); call方法的第1个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象。
6. 使用getResponse方法获得WebService方法的返回结果,代码如下:
SoapObject soapObject = (SoapObject) envelope.getResponse();
7.取值
soapObject.getProperty("这个名字你懂的");
相关文章推荐
- Android客户端访问使用Jersey开发RESTful的webservice服务器
- android 访问c# webservice 实现登陆注册功能(android 上传json到服务器)
- xfire生成webservice,Android利用ksoap2访问webservice 之 服务器搭建
- Android访问webservice服务器的封装类
- Android中使用https(HTTP+SSL)访问服务器
- android使用soap协议访问webservice实现天气预报功能
- WebService连接sql serever并使用Android端访问数据
- android使用volley的GET访问服务器乱码
- Android:使用HttpClient访问HTTP/HTTPS服务器
- 分享:Android 客户端使用HttpGet访问服务器
- C#发布WebService提供使用时候,通过服务器解决前端js跨域访问问题
- Android APP 使用WebView访问服务器H5页面带上Cookie
- Android通过WebService访问服务器
- Android中使用httpclient访问服务器,需要session功能
- Android实战:使用Volley框架访问服务器Json数据
- Android使用Http访问并解析服务器XML数据
- Android使用webservice与服务器通讯
- android使用soap协议访问webservice实现天气预报功能
- 使用tomcat 来搭建本地服务器 ,使用Android 客户端(真机)通过浏览器访问