You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用wsimport生成存根失败:Spring-WS构建SOAP消费者遇403或超时

解决wsimport访问Calculator WSDL时的403/连接超时问题

我来帮你搞定这个Spring-WS构建SOAP消费者时遇到的wsimport错误~

首先,你遇到的403禁止和连接超时,大概率是因为这个公共SOAP服务对请求有访问限制(比如检查请求的User-Agent),或者你的网络环境(公司代理、防火墙)拦截了远程请求。下面给你几个可行的解决方案:

方案1:手动下载WSDL到本地再生成代码

这是最稳妥的办法,绕开远程请求的限制:

  • 先打开浏览器访问http://www.dneonline.com/calculator.asmx?wsdl,把页面内容保存成本地文件,比如命名为calculator.wsdl
  • 然后用本地文件运行wsimport命令:
    wsimport -keep -s ./src -d ./dest ./calculator.wsdl
    
    这样就不用远程拉取WSDL,直接基于本地文件生成Java代码,完美避开403和超时问题。

方案2:给wsimport指定User-Agent参数

有些公共服务会拒绝默认的wsimport请求头,我们可以模拟浏览器的User-Agent:

wsimport -Dhttp.agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" -keep -s ./src -d ./dest http://www.dneonline.com/calculator.asmx?wsdl

这个命令通过-Dhttp.agent参数设置浏览器级别的请求头,大概率能绕过服务端的UA检查。

方案3:配置网络代理(如果你的网络需要代理)

如果是公司网络需要代理才能访问外部地址,给wsimport加上代理参数:

wsimport -Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=代理端口 -keep -s ./src -d ./dest http://www.dneonline.com/calculator.asmx?wsdl

如果代理需要账号密码,还得追加这两个参数:-Dhttp.proxyUser=代理账号和-Dhttp.proxyPassword=代理密码。

额外提示:验证服务可用性

如果上面的方法都不管用,先确认这个SOAP服务是否还正常运行:用浏览器直接访问http://www.dneonline.com/calculator.asmx,看看页面能不能打开。如果打不开,那可能是服务本身下线了,得换个测试用的SOAP服务。

生成代码后,你就可以在Spring-WS里通过WebServiceTemplate调用这些生成的接口,或者配置对应的客户端类来实现SOAP消费啦~

内容的提问来源于stack exchange,提问作者Raghuveer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:17:23