您的位置:首页 > 移动开发 > Android开发

android端实现WebService数据传输

2017-07-25 09:17 549 查看
在工作中需要实现android客户端想服务端通过webservice协议传输数据,用到了ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar 这个JAR包,把客户端实现的过程做一下记录,方便以后查阅。

1、客户端传递基本数据类型的参数到服务端

/**
*
* @Title: query
* @Description:      联动信息查询
* @param param       参数
* @param methodName  方法名称
* @return
* @throws
*/
public static String query(Map<String,String> param,String methodName){
String serviceNS = UrlContainer.SERVICE_NS;
//String serviceUrl = UrlContainer.SERVICE_URL;
String serviceUrl = UrlContainer.getUrl();
HttpTransportSE ht = new HttpTransportSE(serviceUrl, 25000);
ht.debug = true;
// 使用SOAP1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
// 实例化SoapObject对象
SoapObject soapObject = new SoapObject(serviceNS, methodName);
// 传递参数
if(param != null){
Iterator<String> itor = param.keySet().iterator();
while(itor.hasNext()){
String key = itor.next();
soapObject.addProperty(key,param.get(key));
}
}
envelope.bodyOut = soapObject;
// 设置与.Net提供的Web Service保持较好的兼容性
envelope.dotNet = false;
try {
System.setProperty("http.keepAlive", "false");
// 调用Web Service
ht.call(null, envelope);
if (envelope.getResponse() != null) {
// 获取服务器响应返回的SOAP消息
SoapObject result = (SoapObject) envelope.bodyIn;
String details = result.getProperty(0).toString();
Log.d(TAG, "query details = " + details);
// 解析服务器响应的SOAP消息。
return details;
}else{
Log.d(TAG, "query nvelope.getResponse() == null ");
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return null;
}


2、传递的参数是自定义的对象类型

public static String saveAddress(AddressesBean addrBean){
// 创建HttpTransportSE传输对象 ,设置超时时间为15s
HttpTransportSE ht = new HttpTransportSE(UrlContainer.getUrl(), 25000);
ht.debug = true;
// 使用SOAP1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
// 实例化SoapObject对象
SoapObject soapObject = new SoapObject(UrlContainer.SERVICE_NS, UrlContainer.METHOD_SAVE_ADDR);
PropertyInfo objekt = new PropertyInfo();
objekt.setName("addresses");
objekt.setValue(addrBean);
objekt.setType(addrBean.getClass());
soapObject.addProperty(objekt);
envelope.bodyOut = soapObject;
// 设置与.Net提供的Web Service保持较好的兼容性
envelope.dotNet = false;
try {
System.setProperty("http.keepAlive", "false");
// 调用Web Service
ht.call(null, envelope);
if (envelope.getResponse() != null) {
// 获取服务器响应返回的SOAP消息
SoapObject result = (SoapObject) envelope.bodyIn;
String detail = result.getProperty(0).toString();
// 解析服务器响应的SOAP消息。
Log.d(TAG, "saveAddress detail = " + detail);
return detail;
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return null;
}


3、自定义参数

import java.util.Hashtable;

import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

public class AddressesBean implements KvmSerializable {

private  String XZQH;//行政区划
private  String XZQHMC;//行政区划名称
private  String PCS;//派出所
private  String PCSMC;//派出所名称
private  String JWH;//居(村)委会(部
private  String JWHMC;//居(村)委会名称
private  String JLX;//
4000
街路巷
private  String JLXMC;//街路巷名称
private  String MLPH;//门(楼)牌号
private  String MLXZ;//门(楼)详址

@Override
public Object getProperty(int arg0) {
switch (arg0) {
case 0:
return XZQH;//行政区划
case 1:
return XZQHMC;//行政区划名称
case 2:
return PCS;//派出所
case 3:
return PCSMC;//派出所名称
case 4:
return JWH;//居(村)委会(部
case 5:
return JWHMC;//居(村)委会名称
case 6:
return JLX;// 街路巷
case 7:
return JLXMC;//街路巷名称
case 8:
return MLPH;//门(楼)牌号
case 9:
return MLXZ;//门(楼)详址
default:
break;
}
return null;
}

@Override
public int getPropertyCount() {
return 10;
}

@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
switch (arg0) {
case 0:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "XZQH"; //行政区划
break;
case 1:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "XZQHMC"; //行政区划名称
break;
case 2:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "PCS"; // 派出所
break;
case 3:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "PCSMC"; // 派出所名称
break;
case 4:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "JWH"; // 居(村)委会(部
break;
case 5:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "JWHMC"; //居(村)委会名称
break;
case 6:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "JLX"; // 街路巷
break;
case 7:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "JLXMC";//街路巷名称
break;
case 8:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "MLPH";//门(楼)牌号
break;
case 9:
arg2.type = PropertyInfo.STRING_CLASS;
arg2.name = "MLXZ";//门(楼)详址
break;
default:
break;
}
}

@Override
public void setProperty(int arg0, Object arg1) {
switch (arg0) {
case 0:
XZQH = arg1.toString();
break;
case 1:
XZQHMC = arg1.toString();
break;
case 2:
PCS = arg1.toString();
break;
case 3:
PCSMC = arg1.toString();
break;
case 4:
JWH = arg1.toString();
break;
case 5:
JWHMC = arg1.toString();
break;
case 6:
JLX = arg1.toString();
break;
case 7:
JLXMC = arg1.toString();
break;
case 8:
MLPH = arg1.toString();
break;
case 9:
MLXZ = arg1.toString();
break;
default:
break;
}
}

/**
* @return xZQH
*/
public String getXZQH() {
return XZQH;
}

/**
* @param xZQH
*/
public void setXZQH(String xZQH) {
XZQH = xZQH;
}

/**
* @return xZQHMC
*/
public String getXZQHMC() {
return XZQHMC;
}

/**
* @param xZQHMC
*/
public void setXZQHMC(String xZQHMC) {
XZQHMC = xZQHMC;
}

/**
* @return pCS
*/
public String getPCS() {
return PCS;
}

/**
* @param pCS
*/
public void setPCS(String pCS) {
PCS = pCS;
}

/**
* @return pCSMC
*/
public String getPCSMC() {
return PCSMC;
}

/**
* @param pCSMC
*/
public void setPCSMC(String pCSMC) {
PCSMC = pCSMC;
}

/**
* @return jWH
*/
public String getJWH() {
return JWH;
}

/**
* @param jWH
*/
public void setJWH(String jWH) {
JWH = jWH;
}

/**
* @return jWHMC
*/
public String getJWHMC() {
return JWHMC;
}

/**
* @param jWHMC
*/
public void setJWHMC(String jWHMC) {
JWHMC = jWHMC;
}

/**
* @return jLX
*/
public String getJLX() {
return JLX;
}

/**
* @param jLX
*/
public void setJLX(String jLX) {
JLX = jLX;
}

/**
* @return jLXMC
*/
public String getJLXMC() {
return JLXMC;
}

/**
* @param jLXMC
*/
public void setJLXMC(String jLXMC) {
JLXMC = jLXMC;
}

/**
* @return mLPH
*/
public String getMLPH() {
return MLPH;
}

/**
* @param mLPH
*/
public void setMLPH(String mLPH) {
MLPH = mLPH;
}

/**
* @return mLXZ
*/
public String getMLXZ() {
return MLXZ;
}

/**
* @param mLXZ
*/
public void setMLXZ(String mLXZ) {
MLXZ = mLXZ;
}

/**
* @Title: toString
* @Description: TODO
* @return
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "AddressesBean [XZQH=" + XZQH + ", XZQHMC=" + XZQHMC + ", PCS=" + PCS + ", PCSMC=" + PCSMC + ", JWH="
+ JWH + ", JWHMC=" + JWHMC + ", JLX=" + JLX + ", JLXMC=" + JLXMC + ", MLPH=" + MLPH + ", MLXZ=" + MLXZ
+ "]";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息