数据包格式错误,使用WSDL文件

时间:2018-08-29 14:14:20

标签: c# asp.net web-services service sap

我正在尝试使用提供给我的WSDL文件来调用服务。我收到“意外的数据包格式”错误。我已经使用SOAPUI测试了服务,并且一切都从那里开始。当我从C#应用程序调用服务时,出现上面引用的错误。

相关信息

  • 服务是从SAP提供的
  • 服务是通过.WSDL文件导入的
  • 在控制台应用程序内部测试
  • 我已经测试了我的SAP小组提供的其他服务,效果很好。

代码

ZPC_DROP_DOWN_VALUESClient client = new ZPC_DROP_DOWN_VALUESClient();
client.ClientCredentials.UserName.UserName = "ERICO";
client.ClientCredentials.UserName.Password = "Password";
ZpcDropDownValues vals = new ZpcDropDownValues();
vals.Uom = "X";
ZpcDropDownValuesResponse Response = new ZpcDropDownValuesResponse();            

try
{
    Response = client.ZpcDropDownValues(vals);
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}
Console.ReadKey();

这是堆栈跟踪:

  

System.ServiceModel.EndpointNotFoundException:没有在https://r3snd.yaskawa.com:8000/sap/bc/srt/rfc/sap/zpc_drop_down_values/410/zpc_drop_down_values/zpc_drop_down_values处侦听的端点可以接受该消息。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参见InnerException(如果存在)。 ---> System.Net.WebException:无法解析远程名称:“ r3snd.yaskawa.com”      在System.Net.HttpWebRequest.GetRequestStream(TransportContext&context)      在System.Net.HttpWebRequest.GetRequestStream()      在System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()      ---内部异常堆栈跟踪的结尾---

     

服务器堆栈跟踪:      在System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()      在System.ServiceModel.Channels.HttpOutput.Send(TimeSpan超时)      在System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(消息消息,TimeSpan超时)处      在System.ServiceModel.Channels.RequestChannel.Request(消息,TimeSpan超时)      在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息,TimeSpan超时)      在System.ServiceModel.Channels.ServiceChannel.Call处(字符串操作,布尔单向,ProxyOperationRuntime操作,Object [] ins,Object [] outs,TimeSpan超时)      在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)      在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)处

     

异常重新抛出为[0]:      在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)      在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)      在ServicesFromSAP.TableReference.ZPC_DROP_DOWN_VALUES.ZpcDropDownValues(ZpcDropDownValuesRequest请求)      在C:\ Users \ eric_obermuller \ source \ repos \ ServicesFromSAP \ ServicesFromSAP \ Connected Services \ TableReference中的C:\ Users \ eric_obermuller \ source \ repos \ ServicesFromSAP \ ServicesFromSAP \ Connected Services \ TableReference中:ServicesFromSAP.TableReference.ZPC_DROP_DOWN_VALUESClient.ServicesFromSAP.TableReference.ZPC_DROP_DOWN_VALUES.ZpcDropDownValues(ZpcDropDownValuesRequest request)      位于C:\ Users \ eric_obermuller \ source \ repos \ ServicesFromSAP \ ServicesFromSAP \ Connected Services \ TableReference \ Reference.cs:第345行的ServicesFromSAP.TableReference.ZPC_DROP_DOWN_VALUESClient.ZpcDropDownValues(ZpcDropDownValues ZpcDropDownValues1)      在C:\ Users \ eric_obermuller \ source \ repos \ ServicesFromSAP \ ServicesFromSAP \ Programscs:line 33中的ServicesFromSAP.Program.Main(String [] args)处

我不确定是什么问题。该服务是为测试/学习目的提供给我的,因此我可以开始学习如何使用他们的服务。有我不知道的某种设置吗?

任何建议将不胜感激。不知道我是否需要将超时设置为更长或更类似的时间。我到处都在寻找答案,这似乎是个案问题。

1 个答案:

答案 0 :(得分:1)

好的,我知道了这个问题。最初,在测试此应用程序时,该请求实际上是作为Http请求发送给我的。

App.Config中的端点

<endpoint address="http://R3SND.yaskawa.com:8000/sap/bc/srt/rfc/sap/zpc_drop_down_values/410/zpc_drop_down_values/zpc_drop_down_values"
            binding="customBinding" bindingConfiguration="ZPC_DROP_DOWN_VALUES"
            contract="TableReference.ZPC_DROP_DOWN_VALUES" name="ZPC_DROP_DOWN_VALUES" />

当我尝试该应用程序时,出现一个错误,提示“无效的URI Http,预期为Https”。我不知道发生了什么,所以将端点地址更改为Https而不是Http。就是上面提到的错误发生的地方。

在弄乱时,我将其改回Http,并意识到由于我使用HttpsTransport而不是HttpTransport而引发了错误。

Https传输

<httpsTransport authenticationScheme="Basic" />

Http传输(正确的一种)

<httpTransport authenticationScheme="Basic" />

我希望这可以帮助其他人,因为它使我发疯!

谢谢大家看着我的问题。