android端实现WebService数据传输
2017-07-25 09:17
549 查看
在工作中需要实现android客户端想服务端通过webservice协议传输数据,用到了ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar 这个JAR包,把客户端实现的过程做一下记录,方便以后查阅。
1、客户端传递基本数据类型的参数到服务端
2、传递的参数是自定义的对象类型
3、自定义参数
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 + "]"; } }
相关文章推荐
- CXF webservice android 实现本地传输数据
- castor + xml schema 实现webservice中复杂结构数据传输
- [转]在WebService中实现大数据量的传输
- castor + xml schema 实现webservice中复杂结构数据传输
- castor + xml schema 实现webservice中复杂结构数据传输
- castor + xml schema 实现webservice中复杂结构数据传输
- castor + xml schema 实现webservice中复杂结构数据传输
- Delphi实现WebService带身份认证的数据传输
- android在使用apache http类库的时候实现zip传输数据
- Delphi实现WebService带身份认证的数据传输 (转)
- 技术三等奖:Linux下实现Android手机数据传输及网络共享【评委点评】
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- Linux下实现Android手机数据传输及网络共享
- castor + xml schema 实现webservice中复杂结构数据传输-转载 [Zone Yan]
- castor + xml schema 实现webservice中复杂结构数据传输
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- castor + xml schema 实现webservice中复杂结构数据传输
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- android----发送soap数据给服务器调用webservice,实现手机归属地查询
- castor + xml schema 实现webservice中复杂结构数据传输