android调用webservice接口应用实例

一、Webservice接口(使用EJB)

1、接口

package com.zjm.bean;

import javax.ejb.Remote;

@Remote
public interface PhoneRemot {
	
	public String Hello(String username);

}

2、bean

package com.zjm.bean;

import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@Stateless(mappedName="phoneService")
@WebService(serviceName="PhoneService",name="PhoneServer")
public class PhoneService implements PhoneRemot {

	@WebMethod
	public String Hello(@WebParam(name = "username") String username) {
		return "Hello"+ username;
	}
}

二、wsdl接口文件

<?xml version="1.0" encoding="UTF-8" ?> 

- <!--  Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.3-07/10/2008 08:41 PM(bt).   --> 
- <!--  Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.3-07/10/2008 08:41 PM(bt).   --> 
- <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://bean.zjm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://bean.zjm.com/" name="PhoneService">
- <types>
- <xsd:schema>
  <xsd:import namespace="http://bean.zjm.com/" schemaLocation="http://127.0.0.1:7001/PhoneService/PhoneService?xsd=1" /> 
  </xsd:schema>
  </types>
- <message name="Hello">
  <part name="parameters" element="tns:Hello" /> 
  </message>
- <message name="HelloResponse">
  <part name="parameters" element="tns:HelloResponse" /> 
  </message>
- <portType name="PhoneServer">
- <operation name="Hello">
  <input message="tns:Hello" /> 
  <output message="tns:HelloResponse" /> 
  </operation>
  </portType>
- <binding name="PhoneServerPortBinding" type="tns:PhoneServer">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
- <operation name="Hello">
  <soap:operation soapAction="" /> 
- <input>
  <soap:body use="literal" /> 
  </input>
- <output>
  <soap:body use="literal" /> 
  </output>
  </operation>
  </binding>
- <service name="PhoneService">
- <port name="PhoneServerPort" binding="tns:PhoneServerPortBinding">
  <soap:address location="http://127.0.0.1:7001/PhoneService/PhoneService" /> 
  </port>
  </service>
  </definitions>

三、Android客户端

1、加入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar

注意要放在libs文件夹中

2、AndroidManifest.xml配置文件

<uses-permissionandroid:name="android.permission.INTERNET" /> 增加网络访问权限

3、代码

public void onClick(View view) {
		EditText username = (EditText) findViewById(R.id.edtusername);
		TextView txtResult= (TextView) findViewById(R.id.txtResult);
		Object result = null;

		String url = "http://10.88.99.12:7001/PhoneService/PhoneService?wsdl";
		String nameSpace = "http://bean.zjm.com/";
		String method = "Hello";
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("username", username.getText().toString().trim());
		result = getResult(nameSpace, method, url, params);
		txtResult.setText(result.toString());
	}

/**
	 * 调取WebService接口得到结果
	 * @param namespace WebService的命名空间
	 * @param method     WebService所发布的方法
	 * @param url         服务器发布的 url
	 * @param params     参数
	 * @return            
	 */
	public static Object getResult(String nameSpace, String method,
			String url, Map<String, Object> params) {
		String SOAP_ACTION = nameSpace + method;
		// 实例化SoapObject对象,并指定命名空间和方法名
		SoapObject request = new SoapObject(nameSpace, method);
		// 设置调用参数方法,包括参数名称和参数值
		Set keySet = params.keySet();
		// 返回键的
		Iterator it = keySet.iterator();
		while (it.hasNext()) { // 第一种迭代体式格式取键值
			Object key = it.next();
			request.addProperty(key.toString(), params.get(key));
		}
		// 设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用到的WEBSERVICE中的版本号一致)
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
		envelope.bodyOut = request;
         //webservic接口是否为.net注意若设错,接口会得不到参数
		envelope.dotNet = false;
		envelope.setOutputSoapObject(request);
		HttpTransportSE ht = new HttpTransportSE(url);

		try {
			// 调用webservice(其中参数一SOAP_ACTION为命名空间+方法名,参数二为envelope)
			ht.call(SOAP_ACTION, envelope);
		} catch (IOException e) {
			Log.e("IOException:", e.getMessage());
			// androidHT.reset();
		} catch (XmlPullParserException e1) {
			Log.e("XmlPullParserException", e1.getMessage());
		} catch (IllegalStateException e2) {
			Log.e("IllegalStateException", e2.getMessage());
		}
		try {
			// 使用getResponse方法获得WebService方法的返回结果
			return  (Object)envelope.getResponse();
		} catch (SoapFault e) {
			e.printStackTrace();
		}
		return null;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值