`

android ksoap2调用cxf webservice

 
阅读更多
1.activity

package com.first;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class FirstActivity extends Activity {
	
	private Button button =null ;
	private TextView text = null ;
	private EditText editText = null ;
	private Handler handler = null ;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.first_layout);
		
		button = (Button)findViewById(R.id.buttonId);
		text = (TextView)findViewById(R.id.firstText);
		editText = (EditText)findViewById(R.id.queryId);
		handler = new Handler(){
			@Override
			public void handleMessage(Message msg) {
				text.setText("总数为:"+msg.getData().get("count").toString());
			}
		};
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				new Thread(new Ksoap2Webservice(editText.getText().toString())).start();
				text.setText("等待中");
			}
		});
	}
	
	class Ksoap2Webservice implements Runnable{
		
		private String id ;
		public Ksoap2Webservice(String id){
			this.id = id ;
		}
		@Override
		public void run() {
			SoapObject object = getRemoteInfo(id) ;
			if(object != null){
				Message message = handler.obtainMessage();
				Bundle bu = new Bundle();
				bu.putString("count", object.getProperty(0).toString());
				message.setData(bu);
				message.sendToTarget();
			}
		}

		/**
		 * @param 远程调用
		 */
	    private SoapObject getRemoteInfo(String id) {  
	        // 命名空间  
	        String nameSpace = "http://webservice.com/";  
	        // 调用的方法名称  
	        String methodName = "sayHello";  
	        // EndPoint  
	        String endPoint = "http://192.168.1.192:8080/RestFulServer/services/xxWebService?wsdl";  
	  
	        // 指定WebService的命名空间和调用的方法名  
	        SoapObject rpc = new SoapObject(nameSpace, methodName);  
	  
	        // 设置需调用WebService接口需要传入的参数
	        rpc.addProperty("id", id);  
	        
	        // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本  
	        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);  
	        
	        envelope.bodyOut = rpc;  
	        // 设置是否调用的是dotNet开发的WebService  
	        envelope.dotNet = false;  //true是网络 false是java
	        envelope.setOutputSoapObject(rpc);
	        
	        HttpTransportSE transport = new HttpTransportSE(endPoint);
	        SoapObject object = null ;
	        try {  
	            // 调用WebService  
	            transport.call(null, envelope);  
	            // 获取返回的数据  
	            object = (SoapObject) envelope.bodyIn;  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }  
	  
	       return object ;
	    }   
	}
}



2.cxf中的service类

package com.webservice;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

import com.webservice.bo.TestBo;

@WebService(targetNamespace = "http://webservice.com/")
@SOAPBinding(style = Style.RPC)
public interface FirstCxfService {
	public int sayHello(@WebParam(name = "id") int id);
	
	public TestBo getTestBo(@WebParam(name = "name") String name);
	
	public String getNameByObject(TestBo testBo);
}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    android_ksoap2_cxf_wss4j_authentication

    在提供的文件`wsserver2`和`cxf_webservice_android`中,很可能是服务器端的配置和Android客户端的示例代码,具体实现细节需参考这些文件内容。总的来说,实现Android客户端与使用Apache CXF和WSS4J的Web服务的认证...

    xfire开发webservice以及Android利用ksoap2访问webservice

    本教程将深入探讨如何使用XFire开发Web服务,并在Android应用中通过KSOAP2进行调用。 首先,我们需要了解XFire的基础知识。XFire(现已被Apache CXF项目合并)是一个轻量级的Web服务框架,它支持SOAP、RESTful和XML...

    Android使用KSOAP调用webservice返回自定义类

    本篇文章将详细介绍如何在Android应用中使用KSOAP调用Web Service,并处理返回的自定义类。 一、理解KSOAP和SOAP KSOAP是Android平台上的一个开源库,用于处理SOAP请求和响应。SOAP是一种基于XML的协议,用于在...

    Android调用WebService的例子(包括服务器端和客户端)

    Android调用WebService的例子(包括服务器端和客户端)。服务器端使用CXF框架发布,Android客户端使用KSOAP2包读取数据。 分别提供了JavaBean、XML、JSON数据类型的通信方式。

    ksoap2-android-assembly-3.6.2-jar-with-dependencies

    PC版本的WEbservice客户端库非常丰富,例如Axis2,CXF等,但这些开发包对于Android系统过于庞大,也未必很容易移植到Android系统中。因此,这些开发包并不是在我们的考虑范围内。适合手机的WebService客户端的SDK有...

    android 怎样调用web服务

    2. **集成Ksoap2库**:Ksoap2是一个开源的、专门用于Android平台的WebService调用库。要使用Ksoap2,首先需要下载并集成该库到项目中。可以从[Ksoap2的Google Code页面]...

    Android配合WebService访问远程数据库中文最新版本

    实现Android与服务器端数据交互,我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,做过JAVA ME的人都知道有KSOAP这个第...

    android调用webservice接口获取信息

    我的有一篇博客上讲了如何基于CXF搭建webservice,service层的接口会被部署到tomcat上,这一篇我就讲一下如何在安卓中调用这些接口传递参数。 1.在lib中放入ksoap2的jar包并导入 2.在xml 配置文件中加入: <!-- ...

    Android与服务器端数据交互(基于SOAP协议整合android webservice)

    在Android中,由于资源限制,我们不能直接使用Java客户端中的库(如XFire, Axis2, CXF等)来访问Web服务。这时,KSOAP2库就派上了用场。KSOAP2是一个专门为Android设计的轻量级库,它允许Android应用与使用SOAP协议...

    Android与服务器端数据交互(基于SOAP协议整合android+webservice)_.docx

    在PC上,我们通常会使用如XFire、Axis2或CXF等库来访问WebService,但在资源有限的Android设备上,我们需要寻找更适合的解决方案。 KSOAP2是一个适用于Android的轻量级库,专门用于处理SOAP通信。在开始使用KSOAP2...

Global site tag (gtag.js) - Google Analytics