如何通过j2me来实现访问webservice比较常用的方法使用ksoap或者是支持Jsr172的直接使用哪个ws包就行了。访问.net创建的webservice比较麻烦。如果是支持jsr172的设备可以使用wtk2.2直接生成桩,就是生个stub和几个访问类就可以实现对webservice的访问,但要注意返回类型,如果webservice的返回类型不是wtk能支持的话就会生成失败。
如果不支持jsr172的就比较麻烦,可以使用ksoap来做soap协议解析,完成对webservice访问。我试用了ksoap2不知道老是不成功,报错误是因为kxml中的xmlpull有问题。找不到哪个v11的类。感觉用ksoap2会是一个访问.net webservice的好选择,因为它内置了.net支持的选择,可以配置rpc与net选择。但是因为不成功,所以不能不转到ksoap来想办法。
使用它的例子程序作了一个helloworld程序,呵呵不成功,改造它的httptransport类,将发送和接收的soap包打印处出进行比较,发现是soap标签不一致,我用.net的webservice支持的soap标签是soapenc之类的,而使用ksoap打出来的包都是SOAP-ENC之类的。没办法手工改吧。修改org.ksoap.soap.java文件找到SOAP-ENC,SOAP-ENV之类的改成soapenc,soapenv之类。改完了运行,还是出错,察看输入soap包比对.net webservice要求的soap包发现包头少了不少东西。发现该问题是org.kxml.parser.AbstractXmlParser.java文件中public void startTag (PrefixMap prefixMap,String namespace, String name) 方法有问题,其中有个do,while循环存在问题
修改为
do {
  String p2 = current.getPrefix ();
  String ns = current.getNamespace ();
  if (!ns.equals (oldMap.getNamespace (p2))) {
      attribute (p2.equals ("") ? "xmlns" : ("xmlns:"+p2), ns);
        }
  current = current.getPrevious ();
     }
     while (current != null && current != oldMap);
原有方法没有将当前PrefixMap的后继PrefixMap中信息写入所以导致一个标签内的信息不全。修改后运行还是存在问题,根据返回soap包内容发现改造后的包头竟然有两项重复出现,经检查为soap.java内初始化PrefixMap数组时存在问题,原有方法定义一个basePrefixMap,而下面在个协议中使用该PrefixMap构造,所以导致V11与V12版本的soap包头重复出现soapenv与soapenc修改之
public static final PrefixMap [] prefixMap = {
 new PrefixMap (new PrefixMap
     (basePrefixMap, "xsd", XSD1999), "xsi", XSI1999),
 new PrefixMap (new PrefixMap (new PrefixMap (new PrefixMap
     (PrefixMap.DEFAULT, "xsd", XSD), "xsi", XSI), "soap", ENV), "soapenc", ENC),
 new PrefixMap (new PrefixMap (new PrefixMap (new PrefixMap
     (PrefixMap.DEFAULT, "xsd", XSD), "xsi", XSI), "soap", ENV2001), "soapenc", ENC2001)};
 这样就好了,哈哈。不过运行还是出错。是enc与env的协议不匹配,呵呵我用的V12也就是2001没想到竟然不对,改用V11后问题解决,不过不是可以运行,使这个问题不出了,出现另外问题,soap返回fault代码是soapAction不存在,比对后发现,比较变态的说,这个SoapAction必须和.net webservice给出的一样才行,而且有些是namespace+method有些不是。累,指定SoapAction为namespace+method,例如这个SoapAction就是"http://ww.tmp.com/method",而那个url就是http://yourserver/yourservice.asmx;这样终于可以访问了。
漏了一句,如果想要访问.net的webservice我用的[WebMethod,SoapRpcMethod]在每个需要访问的服务方法上面。如果不添那个SoapRpcMethod就不能用呀。
终于搞定。

转载于:https://www.cnblogs.com/richardli79/archive/2005/11/25/284308.html

J2ME下访问.net的webservice相关推荐

  1. linux 内网共享文件夹_在Linux下访问Windows共享文件夹

    说明 以下操作以Ubuntu为例,大家可以参考. 我在Ubuntu 14.04和16.04都试过了. Windows共享文件夹 如果局域网内有一台Windows主机,将指定文件夹设为共享,就可以在局域 ...

  2. Solaris下访问windows共享资源

    今在做实验过程中,发现上传软件太费时而且解压起来也繁琐,还要占用很大的空间,就在windows上创建了共享资源,在linux下使用mount挂载上来,直接解压在windows上面,用完了直接将解压的文 ...

  3. windows 连Linux,Windows下访问Linux资源

    Windows下访问Linux资源 在Red Hat Linux中,借助Samba服务在Windows下访问Linux的资源也是很容易的,依次单击"主菜单" "系统设置& ...

  4. win7系统下访问网上邻居提示用户名密码错误

    win7系统下访问网上邻居提示用户名密码错误 解决方法如下: 1)在搜索栏中输入gpedit.msc调出组策略编辑器 2)计算机配置下依次点击[windows设置]--[安全设置]--[本地策略]-- ...

  5. 【Linux】Centos7安装之后,双系统的情况下,怎么能在CentOS7下访问Windows的磁盘...

    想要在CentOS7下访问Windows的NTFS格式的磁盘,需要在Linux下下载ntfs-3g步骤1: 进入root用户下,使用yum命令下载ntfs-3g.[前提是已经添加了常用源:http:/ ...

  6. 一种User Mode下访问物理内存及Kernel Space的简单实现

    一种User Mode下访问物理内存及Kernel Space的实现 一.背景 WinCE发展到6.0之后,内存结构和管理方法进行了完善.对应用程序影响比较大的有Virtual Memory Layo ...

  7. Windows下访问VirtualBox的mysql服务

    由于好长时间没有在windows下使用mysql,现在出现好多选项,而且使用sqlyog连接总是出现1045错误,所以在虚拟机Ubuntu下安装mysql进行访问,但是想用win下面vscode进行开 ...

  8. kali查看共享 linux_在Linux下访问Windows共享文件夹

    在Linux下访问Windows共享文件夹 说明 以下操作以Ubuntu为例,大家可以参考. 我在Ubuntu 14.04和16.04都试过了. Windows共享文件夹 如果局域网内有一台Windo ...

  9. linux 访问文件软件,Linux下访问文件的基本模式

    Linux下访问文件的基本模式 发表于:2013-10-09来源:IT博客大学习作者:edsionte点击数: 访问文件的操作主要是指读文件和写文件,下文简单说明内核中几种常见的访问文件的方式. 访问 ...

最新文章

  1. angularjs里对JS的lowercase和uppercase的完善
  2. linux 字符驱动阻塞型 等待队列
  3. Tomcat源码解析六:Tomcat类加载器机制
  4. Redis Python
  5. word实现文献引用2
  6. 基础的APP技术框架,UI设计师必知!
  7. android studio单元测试插件,Android Studio单元测试插件下载
  8. Linux设备驱动模型-Kobject
  9. OpenCV_信用卡识别代码_唐宇迪实战项目
  10. matlab判断同构数,c语言:编写函数判断x是否同构数
  11. mysql中select使用方法_MySQL中select语句介绍及使用示例
  12. 如何将pdf压缩到最小?怎么将pdf文档压缩至更小?
  13. 快学数据挖掘—数据探索—贡献度分析
  14. 关于LTE网络质量的参数
  15. oracle ins ctx.mk,安装Oracle10g遭遇ins_ctx.mk问题解决方法
  16. 中望3D 2021 自动标注
  17. SQL 追踪(SQL Trace)
  18. 政务大数据云平台架构方案(ppt)
  19. bu hui zhuang shu ru fa
  20. C# windows服务:创建Windows服务(Windows Services)的一般步骤

热门文章

  1. 去IOE:去掉“IE”就Ok?
  2. aix察看根目录各文件和子目录大小,去除文件系统统计
  3. 用户 NT AUTHORITY\NETWORK SERVICE 登录失败解决方法
  4. android data binding jetpack III 绑定一个方法
  5. JavaScript 中的常用12种循环遍历(数组或对象)的方法
  6. 编程实战一通讯录程序
  7. struts2综合例子--------拦截器(登陆检查,日志记录),校验validate,
  8. 【好程序员笔记分享】——UIView与CALayer详解
  9. C/C++变量命名规则,个人习惯总结
  10. Nginx HTTP User_agent