我正在ASP.NET / C#(.NET 4.6,VS 2015)中编写一个需要的Web服务:
我承认我在编写Web服务方面是全新的。 1-3完成了。 5-6将是微不足道的,因为我已经将“Hello World”类型的响应发送回调用应用程序。
我被困在#4。似乎无处可寻找响应包络 - 调用外部SOAP服务没有错误,这个具有相同数据的SOAP调用使用Fiddler和Postman发送响应,因此外部SOAP服务很好。
关于#4,我在现有的SOAP服务中添加了一个服务引用。我可以调用Web服务,但在调试和查看代理类时,我看不到任何方法来访问响应信封或响应信封内的任何内容。
我知道这是非常基本的,所以必须有一些我缺少的东西。有人可以指点我的教程吗?我一直在寻找一个没有快乐的解决方案。
我是否需要编辑服务参考以返回数据?如果是这样,我该怎么做?
再次抱歉新手问题;非常感谢你。
摘要:我正在调用的SOAP服务正常工作并做出响应,但我找不到如何从SOAP响应信封中实际检索数据;调试时我甚至都看不到SOAP响应信封。我确定我错过了一些非常基本的东西。
编辑:以下是先前请求的一些代码,并进一步说明:
string fieldValue = _fieldPrefix + fieldContents + _fieldSuffix;
ExternalSoapClient soapClient = new ExternalSoapClient(_endpointName);
soapClient.Execute(fieldValue);
ExecuteResponseBody responseBody = new ExecuteResponseBody();
string executeResult = responseBody.ExecuteResult;
我想我问的问题是:我很确定我错过了将响应与执行连接起来的步骤。 SOAP方法称为“Execute”,只有上面显示的一个字符串字段。
答案 0 :(得分:0)
您在代码示例中尝试完成的内容并不完全清楚,但我认为您正在寻找的内容是这样的:
string fieldValue = _fieldPrefix + fieldContents + _fieldSuffix;
ExternalSoapClient soapClient = new ExternalSoapClient(_endpointName);
ExecuteResponseBody responseBody = soapClient.Execute(fieldValue);
string executeResult = responseBody.ExecuteResult;
我期望的是Execute
返回一个ExecuteResponseBody
对象,该对象在.NET框架中表示为一个类。该类的ExecuteResult
属性应包含您正在寻找的值。
简而言之,您的代码应该将服务的响应分配给ExecuteResponseBody
对象,然后您可以访问其中包含的数据。您当前的方法是不将ExecuteResponseBody
对象连接到服务调用的结果 - 您在调用之后创建一个新对象(并且对从()),因此您要查找的数据不会出现在新创建的对象中。