【发布时间】:2010-11-15 04:23:05
【问题描述】:
这与 .NET 相关。而且我决定使用 Web 服务参考而不是 Web 服务...我认为虽然我下面的问题确实适用于任何一种情况,但我想尝试了解这一点。
这就是我的问题。让我先解释一下我来自哪里。在过去的一个项目中,我之前通过创建手动类(例如 GetPicturesRequest.cs 和 GetPicturesResponse.cs)与几个 API 进行了交谈,这些类将为我保存状态。我有一个名为 Request.cs 的基类,它实际发送了 api 调用:
Stream requestStream;
Stream responseStream;
XmlDocument doc = new XmlDocument();
doc = CreateRequestXML();
// Determins if API call needs to use a session based URI
string requestURI = UseAuthURI == true ? _requestURIAuthBased + JSessionID : _requestURI;
byte[] data = XmlUtil.DocumentToBytes(doc);
// Create the atual Request instance
HttpWebRequest request = CreateWebRequest(requestURI, data.Length);
request.ContentLength = data.Length;
request.KeepAlive = false;
request.Timeout = 30000;
// Send the Request
requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
现在我想使用 Web 服务参考。所以我在 VS 2008 中指出并创建了一个对 https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl 的新引用。我现在有了一个 Web 引用。
作为第一次使用 Web 服务的用户,我现在有这些问题,而不是像使用 3rd 方 API 那样手动操作:
1) 如何指定标头参数?例如,某些 API 要求您发送哈希(签名)、会话 ID、用户名、密码,您将其与 API 方法调用请求一起命名。如何使用 Web 服务代理类指定这一点?
2) 请求/响应对象是如何处理的,或者我现在使用 Web 服务/引用不需要担心这一点?我的意思是我还需要创建一个请求对象吗?我将如何接收响应?
3) 当我收到响应时,代理类是否包含它的状态,或者我是否仍然需要创建一个类来保存从 API 方法调用响应返回的数据的状态?网络服务/参考?
4) 我什么时候想要像以前一样只创建自定义代码而不使用 WSDL 的 Web 服务/引用选项?...基本上是创建自己的代理类、请求对象,响应对象,一切?而不是让 VS 吐出基于 WSDL 的 Web 参考?是不是因为它不是基于 SOAP 的第 3 方 API?是不是因为 3rd 方 API 不提供 WSDL,所以你不得不自己手动编写包装器代码?
【问题讨论】:
标签: asp.net web-services