【问题标题】:Invoking a web service - asmx - through a Microsoft Web API end point?通过 Microsoft Web API 端点调用 Web 服务 - asmx?
【发布时间】:2014-01-18 17:17:12
【问题描述】:

我正在使用Microsoft ASP.NET Web API 2,我的一个端点必须在内部调用旧的asmx Web 服务。

这是正确的方法吗?

...................................................
WebRequest req = WebRequest.Create(myWebServiceURL);

req.Method = "POST";
eq.ContentType = "application/x-www-form-urlencoded";

string postData = whateverDataNeedsToBePosted;

using ( Stream reqStream = req.GetRequestStream() )
      {
            reqStream.Write( new ASCIIEncoding().GetBytes( postData ),
                              0, postData.Length );
            reqStream.Close();
       }
 WebResponse resp = req.GetResponse();

.................................................. .

更新:我确实有一堆非 Microsoft 技术的 Web 服务(没有 asnx 或 svc)。上述方法对于这些类型的服务是否足够好?

【问题讨论】:

  • 看起来很合理,但使用 jebar8 建议的自动生成代理会比手动构建 XML 容易得多。如果你决定走这条路,请使用适当的 XML API(如XDocument)来构造请求/解析响应。
  • @AlexeiLevenkov 请查看更新后的问题。
  • 是的...您的 POST 超级通用示例绝对适用于任何接受 POST HTTP 请求的服务(REST 服务、Web 服务/SOAP、常规 HTML 页面...)

标签: c# web-services asp.net-web-api asmx .net-4.5


【解决方案1】:

这行得通,但你让你的生活变得困难:)

您可以在 Visual Studio 中将服务引用添加到您的项目并调用 ASMX 服务中的方法,就像调用引用的 DLL 中的方法一样。见this article

更新:

是的,您调用其他服务的方法将起作用,但我会先检查是否将您的其他服务作为服务引用添加到您的项目中。服务参考功能适用于各种协议(无论是否使用 Microsoft 技术构建)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多