微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SOAP之WebService、JSON传值问题

SOAP之WebService、JSON传值问题

发表于1年前(2012-08-17 15:11)   阅读( 1248) | 评论0)  0人收藏此文章我要收藏
0

首先,Server端(Java后台代码):(web.xml、sun-jaxws.xml、BulletinService.java、BulletinServiceDelegate.java)

1 web.xml文件

01 <?xml version="1.0" encoding="UTF-8"?>
02 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
03   <servlet>
04     <description>JAX-WS endpoint - UseRSServiceService</description>
05 <display-name>UseRSServiceService</display-name>
06 <servlet-name>UseRSServiceService</servlet-name>
07 <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet->
08 <load-on-startup>1</load-on-startup>
09 </servlet>
10  
12 13 <url-pattern>/BulletinServicePort</url-pattern>
15    
16 <welcome-file-list>
17 <welcome-file>index.jsp</welcome-file>
18 </welcome-file-list>
19 <listener>
20 <listener-21 com.sun.xml.ws.transport.http.servlet.WSservletcontextlistener
22 </listener-23 </listener>
24 </web-app>
sun-jaxws.xml文件,和web.xml同目录下
<?xml version = "1.0"2 <endpoints version="2.0" "http://java.sun.com/xml/ns/jax-ws/ri/runtime"3 <endpoint name="BulletinServicePort" implementation="com.sk.service.BulletinService"
4         url-pattern="/BulletinServicePort"5 </endpoint>
6 </endpoints>
BulletinService.java文件service层,去调用dao层的方法
package com.sk.service;
import java.util.List;
javax.jws.WebMethod;
javax.jws.WebService;
 
org.json.JSONArray;
com.sk.dao.IBulletinDao;
com.sk.dao.impl.BulletinDaoImpl;
com.sk.vo.Gpw_Bulletin_Info;
<a href="http://my.oschina.net/u/142217" ="referer" target="_blank">@WebService</a>
public class BulletinService {
IBulletinDao bulletinDao = new BulletinDaoImpl();
    @WebMethod
    public String find() {
List<Gpw_Bulletin_Info> list = bulletinDao.findAll();
        // 调用查询方法
JSONArray jsonArray = JSONArray(list);
        return jsonArray.toString();
25 }
26      
27 }
BulletinServiceDelegate.java文件service层,WebServices对外暴露数据
@javax.jws.WebService(targetNamespace = "http://service.sk.com/",serviceName = "BulletinServiceService""BulletinServicePort")
BulletinServiceDelegate {
com.sk.service.BulletinService bulletinService = com.sk.service.BulletinService();
bulletinService.find();
}
}

然后,Client端(Android代码):(Config.java、SOAPUtil.java、dbconfig.properties子三个文件完成Android客户端的WebServices部署)

1 Config.java文件
01 com.sk.soap;
02  
03 java.io.IOException;
04 java.util.Properties;
05  
06 Config {
07 private static Properties prop = Properties();
08 static{
09 try {
10             //加载配置文件dbonfig.properties
11             prop.load(Config..getResourceAsstream("dbconfig.properties"));
12 } catch (IOException e) {
13 // Todo Auto-generated catch block
14 e.printstacktrace();
15 }
16 }
17      
18     //获取dbconfig.properties中的值
19 static final String WSDL_HTTP = prop.getProperty("WSDL_HTTP");
20      
21 }
SOAPUtil.java文件
org.ksoap2.soapEnvelope;
org.ksoap2.serialization.soapObject;
org.ksoap2.serialization.soapSerializationEnvelope;
org.ksoap2.transport.HttpTransportSE;
org.xmlpull.v1.XmlPullParserException;
android.util.Log;
         
SOAPUtil {
Object TransportData(String service, String webMethod,Object[] params){
SoapObject request = SoapObject(
for(int i=0;i<params.length;i++){
Log.v("params"arams[i].toString());
request.addProperty("arg"+i,params[i]);
}      
SoapSerializationEnvelope envelope = SoapSerializationEnvelope(SoapEnvelope.VER11);        
22 envelope.bodyOut = request;        
23 HttpTransportSE ht = HttpTransportSE(Config.WSDL_HTTP+service);
24 {          
25 ht.call(null26             if (envelope.getResponse() != ) {              
27                 envelope.getResponse();
28 29 (IOException e) {
30 e.printstacktrace();                   
31 (XmlPullParserException e) {
32 33 }      
34 return ;
35 36 37 }
dbconfig.properties文件,写链接地址
WSDL_HTTP=http\://192.168.0.91\:8080/SK_Java_Service/
最后看一下Activity中如何通过JOSN取后台传过来的值:    
1 在oncreate()方法里边调用下边方法jsonAdapter()给适配器
List<Gpw_Bulletin_Info> list = this.jsonAdapter();
2 // 加载适配器
3 listadapter adapter = listadapter(ListActivity.4  
5 list_LV.setAdapter(adapter);
01 private List<Gpw_Bulletin_Info> jsonAdapter() {
02 ArrayList<Gpw_Bulletin_Info>();
03  
04 Object obj = SOAPUtil.TransportData("BulletinServicePort?wsdl""find"
05 Object[] {});
06 String data = String.valueOf(obj.toString());
07 Log.i("TAG""data=" + data);
08 (data != ) {
09 {
10                 JSONArray json = JSONArray(data);
11 12 for i = ; i < json.length(); i++) {
13                     Gpw_Bulletin_Info info = Gpw_Bulletin_Info();
14 15 info.setBulletinid(((JSONObject) json.get(i))
16                             .getInt("bulletinid"));
17 info.setTitle(((JSONObject) json.get(i)).getString("title"));
18 info.setHtmlcontent(((JSONObject) json.get(i))
19 .getString("htmlcontent"20 info.setStartdate(((JSONObject) json.get(i))
21 "startdate"22 23 list.add(info);
24 }
25 (JSONException e) {
26 e.printstacktrace();
27 }
28 else {
29 Toast.makeText(getApplicationContext(),monospace!important; border:0px!important; color:blue!important; outline:0px!important; float:none!important; vertical-align:baseline!important; position:static!important; left:auto!important; top:auto!important; right:auto!important; bottom:auto!important; height:auto!important; width:auto!important; line-height:1.1em!important; font-size:10pt!important; min-height:inherit!important">"暂无数据!"30 .show();
31 32 list;
33 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐