做了个windows服务,使用C#调用java的webservice,局域网本地环境测试正常,服务器安装运行后出现如下错误:
System.Web.Services.Protocols.SoapException: java.lang.NullPointerException
在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response,
Stream responseStream, Boolean asyncCall)
在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
在 UMService.SmsReference.SmsServiceService.sendSMS(String UserName, String Password, SmsMessages msgs)
PS:方法sendSMS参数都做过初始化
有几个地方未说明具体信息:
1、WebService是你开发的还是既有的?
2、服务器安装运行后出现异常:是你的服务还是你写的WebService?
如果WebService是自己开发的,那么在测试环境调用发布后的WebService是否正常?如果不正常,问题是你的WebService发布的问题,这个就不懂了。
如果服务是既有的,那就是你的WinService安装到服务器后运行出现了问题。你可以:
1、把WinService服务转成WinForm或Console项目,然后去服务器运行,是否正常?
2、如果不正常,说明是你的服务器对Soap的调用有意外,比如未安装Soap、Soap被拦截等等可能
3、如果正常,那就是你的WinService的权限、使用的资源受限导致的。
WebService是第三方平台的,我把服务转换成控制台运行还是一样的错误
@samumu: 那就是你的服务器系统不支持或禁止了soap导致的,可以从这个方面入手分析。
可以先用soapUI测试服务。
你这个是空指针异常,应该是哪里没有判断为空,直接取得数据。
服务器端调用sendSMS引发错误,参数做过初始化
@samumu: 数据的传输应该出问题了,数据传输类要序列化。
找到问题了,通过比较本地和服务器端发送出去的xml数据,服务器上的日期格式为yyyy/mm/dd,本地日期格式为yyyy-mm-dd,
java服务端只能处理yyyy-mm-dd格式,所以导致在服务器上运行时报错。