基于SOAP与服务器进行数据交互

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 17:57   597   0

近日,在做一个android项目的时候,有用到和.net服务器进行数据交互的功能,但是自己不太会做,所以就问了一些同事,然后参见了些网上的基于SOAP与数据库进行数据交互的例子,然后就写出了下面的代码:

public static int getTaskCount(int orgId, int state) {
 String str = null;
 int taskCount = 0;

 // 实例化SoapObject对象,Common.SERVICE_NAMESPACE = "http://tempuri.org/" :命名空间
 // Common.TASK_COUNT_METHOD_NAME是方法名
 SoapObject request = new SoapObject(Common.SERVICE_NAMESPACE,
   Common.TASK_COUNT_METHOD_NAME);

 // 传入SoapObject对象中的参数,如果没有参数的话也可以不要
 request.addProperty("orgid", orgId);
 request.addProperty("state", state);

 // 设置SOAP请求信息,把构造好的soapObject封装进去,设置好属性后,再发出请求
 // (参数部分为SOAP协议版本号,与webservice版本号一致)
 /*
 * 常量SoapEnvelope.VER10:对应于SOAP1.0规范 常量SoapEnvelope.VER11:对应于SOAP1.1规范
 * 常量SoapEnvelope.VER12:对应于SOAP1.2规范
 */
 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
   SoapEnvelope.VER11);
 envelope.bodyOut = request;
 envelope.dotNet = true;
 envelope.setOutputSoapObject(request);

 /*
 * 在kSOAP中,我们用Base64把二进制流编码为ASCII字符串, 这样就可以通过XML/SOAP传输二进制数据了。
 * org.ksoap2.serialization.MarshalBase64的目的就是, 把SOAP
 * XML中的xsd:based64Binary元素序列化为Java字节数组(byete array)类型。
 * 类似的,kSOAP2还提供了MarshalDate、MarshalHashtable类
 * 来把相应的元素序列化为Java的Date、Hashtable类型。 (该步可省 据需要决定) (new
 * MarshalBase64()).register(envelope);
 */
 // 注册envelope
 (new MarshalBase64()).register(envelope);

 // 构建传输对象,开启调试信息
 //Common.SERVICE_URL = "http://222.188.91.150:8010/APP_WebServices/FMOA_WebService.asmx?wsdl"
 AndroidHttpTransport transport = new AndroidHttpTransport(
   Common.SERVICE_URL);
 transport.debug = true;

 try {
  // 调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象)
  transport.call(Common.SERVICE_NAMESPACE
    + Common.TASK_COUNT_METHOD_NAME, envelope);

  // 取得返回数据
  if (envelope.getResponse() != null) {
   str = ((SoapObject) envelope.bodyIn).getProperty(0).toString();
  }

  if (str != null && !"".equals(str)) {
   taskCount = Integer.parseInt(str);
  }
 } catch (Exception e) {
  e.printStackTrace();
 }

 return taskCount;
}


当然在编写这些代码之前需要引入一个jar文件:ksoap的jar包

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP