SOAP Web 服务客户端 C# 入门



我的老板问,构建一个客户端来访问一个将发送和接收一些基本数据和嵌入式文档的 Web 服务需要多长时间。刚开始玩它,看看有什么。我已经做了大约 20 年的 Web 和桌面开发,但实际上从未接触过 Web 服务,因此我处于极端的新手水平。

到目前为止,我使用 wsdl 创建了 ServiceReference1,我可以在智能感知中看到方法,但我不知道从哪里开始调用方法、传递参数和使用响应。 我觉得很愚蠢,因为我确信它非常简单,但只是在代码上挥舞并寻找点示例已经让我一无所获。 通常我可以通过谷歌在几分钟内找到一些恰到好处的东西,但在这里没有运气。 希望朝着正确的方向前进。

所以基本问题。 拨打电话的正确方式。如何以及在何处登陆返回的数据。如何添加参数。

这是我的第一次尝试。 这将获取一个简单的列表,并且没有参数。fiddler 中的结果返回数据,但存在运行时类型不匹配错误,我认为这是由一些杂散字符导致响应引起的,这似乎是由卡盘引起的,不管那是什么。响应每次都以1ffs开头,然后包含 xml 的其余部分。其次,我需要将列表放入数据集或其他容器中,但我希望能够单步进入代码并查看结果

ServiceReference1.FilingInfoClient webservice = new FilingInfoClient();
ServiceReference1.courtListRequest cr = new ServiceReference1.courtListRequest();
ServiceReference1.courtListResponse lr = new ServiceReference1.courtListResponse();
lr = webservice .getCourtList(cr);

这本质上是相同的,但需要一个日期参数。当我运行这个小提琴手时,显示参数未发送。没有其他错误,但我敢肯定只是因为它立即爆炸了。

ServiceReference1.FilingInfoClient webservice = new FilingInfoClient();
ServiceReference1.messageListRequest mr = new ServiceReference1.messageListRequest();
ServiceReference1.MessageListResponse mlr = new ServiceReference1.MessageListResponse();
mr.latestMessagePullTimestamp = DateTime.Now.AddDays(-5);
mr.endTimestamp = DateTime.Now;
mlr.latestMessagePullTimestamp = DateTime.Now; 
mlr = webservice.getMessageList(mr);

这是 Web 服务主机提供的信息

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn1="urn:green:partner:ws:schema:FilingInfo">
<x:Header/>
<x:Body>
<urn1:getcourtList>
<urn1:courtListRequest/>
</urn1:getcourtList>
</x:Body>
</x:Envelope>
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn1="urn:green:partner:ws:schema:FilingInfo">
<x:Header/>
<x:Body>
<urn1:getMessageList>
<urn1:messageListRequest>
<urn1:latestMessagePullTimestamp>?</urn1:latestMessagePullTimestamp>
</urn1:messageListRequest>
</urn1:getMessageList>
</x:Body>
</x:Envelope>

我们为 Web 服务中的每个操作提供了请求和响应对。 想想请求=>输入,响应=>输出,操作=>方法。

网络服务是一个 API。 使用 API 的东西是客户端。 WSDL 描述了 API 的操作及其请求和响应。 像Visual Studio这样的工具知道如何读取WSDL并构建C#代码来执行这些(SOAP(操作。 这是客户端(此处FilingInfoClient(。 Visual Studio 还将生成表示每个请求和响应的类。

这允许熟悉的编程体验。 你调用一个方法,给它一些输入,它返回一些输出。

using (var client = new FilingInfoClient())
{
var request = new courtListRequest
{
//TODO fill in relevant properties
};
var response = client.getCourtList(request);
}

相关内容

  • 没有找到相关文章

最新更新