自己在学习webservice后,做个简单的练习,发现里面真的不是想象的那么简单,还是有好多坑的,以下就是我碰到的坑,只是记录:
//1/创建服务 String wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"; String ns="http://WebXml.com.cn/";//命名空间 try { URL url=new URL(wsdl); QName qName=new QName(ns,"WeatherWebService"); Service service=Service.create(url,qName); //2、创建dispatch Dispatch<SOAPMessage> dispatch=service.createDispatch(new QName(ns,"WeatherWebServiceSoap"), SOAPMessage.class,Service.Mode.MESSAGE); dispatch.getRequestContext().put("javax.xml.ws.soap.http.soapaction.uri","http://WebXml.com.cn/getSupportCity"); dispatch.getRequestContext().put("javax.xml.ws.soap.http.soapaction.use",true); //3.创建SOAPMessage SOAPMessage msg= MessageFactory.newInstance().createMessage(); SOAPEnvelope envelope=msg.getSOAPPart().getEnvelope(); SOAPBody body=envelope.getBody(); //创建QName指定消息中传递的数据 QName eName=new QName(ns,"getSupportCity"); SOAPElement els=body.addBodyElement(eName); els.addChildElement("byProvinceName").setValue("山东"); msg.writeTo(System.out); SOAPMessage response=dispatch.invoke(msg); response.writeTo(System.out); } catch (MalformedURLException e) { e.printStackTrace(); } catch (SOAPException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
第一个坑,没有设置dispatch.getRequestContext().put("javax.xml.ws.soap.http.soapaction.uri","http://WebXml.com.cn/getSupportCity"); dispatch.getRequestContext().put("javax.xml.ws.soap.http.soapaction.use",true);
此时会报错:ServerSOAPFaultException: Client received SOAP Fault from server: 服务器未能识别 HTTP 头 SOAPAction 的值
第二个坑,随便命名空间加了个前缀//创建QName指定消息中传递的数据 QName eName=new QName(ns,"getSupportCity","nn");
把后面的“nn”,去掉,否则报错:
.ServerSOAPFaultException: Client received SOAP Fault from server: 服务器无法处理请求。 —> 未将对象引用设置到对象的实例。
入坑原因还是自己学艺不精,也不知道具体解决的原因及思路。

Java中使用SOAP的方式调用天气预报webservice的接口实例相关推荐

  1. java中的异常处理代码,java_深入剖析Java中的各种异常处理方式,1. 调试追踪代码:public s - phpStudy...

    深入剖析Java中的各种异常处理方式 1. 调试追踪代码: public static void enterTryMethod() { System.out.println("enter a ...

  2. 关于Java中的Map遍历方式比较

    最近在看阿里巴巴最新版的Java开发手册,里面的内容还是很值得去阅读学习,下面是我对Java中Map的遍历方式的比较和总结: 第一种:使用entrySet()的形式来遍历,也是效率高,推荐使用的一种遍 ...

  3. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类

    opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...

  4. java soap 头_如何在Java中添加Soap标头

    我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...

  5. JS 和 Java 中URL特殊字符编码方式

    前几天遇到url特殊字符编码的问题,在这里整理一下: JavaScript 1.  编码 escape(String) 其中某些字符被替换成了十六进制的转义序列. 解码 unescape(String ...

  6. java数组初始化的方式,java中初始化数组的方式有几种

    java中初始化数组的方式有几种 发布时间:2020-06-01 16:12:45 来源:亿速云 阅读:153 作者:鸽子 三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 ...

  7. java中常见跳出循环的方式总结

    java中常见跳出循环的方式一般有两种,一种是常用的break,continue,return方式:另一种是循环标记的方式. 方式一:break,continue,return方式 案例: break ...

  8. java中的Map遍历方式总结

    java中的Map遍历方式总结 import java.util.HashMap; import java.util.Iterator; import java.util.Map;public cla ...

  9. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序

    1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法的方法体 public vo ...

最新文章

  1. 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)
  2. golang time 时间 加减法
  3. Systemd 入门及常用命令
  4. Vue.js 生产环境部署
  5. 02-Unity深入浅出(二)
  6. 滑动窗口最大值--单调队列
  7. 有关文学知识对我大学生活的影响
  8. iphone照片永久删除怎么恢复_微信数据怎么永久删除不被恢复?只删除聊天记录没用,打开这里彻底删除!...
  9. C#启动前为所有的Form设置统一的Icon
  10. Mac上自带的语音功能怎么用?让你的mac读给你听
  11. Atitit。木马病毒原理机密与概论以及防御
  12. BS结构浏览器网页读写IC卡技术汇总
  13. 论文流程图——使用VISIO制作论文中的流程图
  14. RFID射频识别的解读及应用
  15. linux7开放3306端口,CentOS 7 开放3306端口
  16. Chrome vimium 插件
  17. python微服务开发pdf_《微服务设计》中文完整版PDF电子书下载
  18. 拉曼光谱去除荧光性 matlab,基于多项式拟合的拉曼光谱基线漂移校正方法(英文)...
  19. 判断js中对象的类型
  20. 自学Python3脚本100例(1-10)

热门文章

  1. 计算机网络管理员工作周记,计算机java开发实习周记20篇
  2. vs2019 自定义工具错误: 未能生成文件: 系统找不到指定的文件。 (异常来自 HRESULT:0x80070002)
  3. 飞天侠秒杀程序是什么(飞天侠秒杀程序后台密码错误解决方法)
  4. CrackMe 之 006
  5. k8s(kubernetes)通过jenkins从harbor拉取镜像,包括yaml传参(史诗级,保姆级)
  6. MATLAB中ode45()和Runge-Kutta算法(4阶)的比较
  7. 新鲜出炉的京东面试题
  8. 【C语言】求素数的三种方案
  9. C语言-找出0-100内的素数
  10. FreeRTOS队列原理