Web Services 500从C#访问Web服务时发生内部服务器错误

r9f1avp5  于 2023-10-24  发布在  C#
关注(0)|答案(3)|浏览(200)

我已经被这个问题困扰了很长一段时间了。我试图根据WSDL文件中的信息创建一个SOAP请求,发送到Web服务并检索响应。从我在网上读到的来看,这应该是一个相当简单的过程,所有的教程和指南几乎都是一样的。
代码:

string message = @"<?xml version=""1.0"" encoding=""utf-8""?>
            <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
                <soap:Body>
                    <GetQuote xmlns=""http://www.webservicex.net/"">       
                        <symbol>BB</symbol>        
                    </GetQuote>  
                </soap:Body>
            </soap:Envelope>";

        HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(@"http://www.webservicex.net/stockquote.asmx");
        webRequest.Headers.Add(@"SOAPAction:http://www.webservicex.net/GetQuote");
        webRequest.ContentType = "text/xml;charset=\"utf-8\"";
        webRequest.Method = "POST";

        XmlDocument soapEnvelopeXml = new XmlDocument();
        soapEnvelopeXml.LoadXml(message);

        using (Stream stream = webRequest.GetRequestStream())
        {
            soapEnvelopeXml.Save(stream);
        }

        using (WebResponse response = webRequest.GetResponse())
        {
            using (StreamReader rd = new StreamReader(response.GetResponseStream()))
            {
                string soapResult = rd.ReadToEnd();
                Console.WriteLine(soapResult);
            }
        }

我一定不清楚这一切是如何工作的,据我所知,http请求被发送到我们在WebRequest.Create()方法中指定的Web服务,沿着其他一些信息,如SOAPAction,我猜这是我们想要调用的实际方法?在消息体中,链接了XML名称空间,元素可以通过该名称空间进行访问(GetQuote,symbol).所以对我来说,一切听起来都应该是流动的。一定有什么我错过了或做错了,因为我得到一个内部服务器错误,当我试图读取响应。
我试图从www.webservicex.com访问一个非常基本的网络服务。下面提供了链接。
服务链接:http://www.webservicex.net/stockquote.asmx
WSDL:http://www.webservicex.net/stockquote.asmx?WSDL

2nc8po8w

2nc8po8w1#

这可能是由于你的测试数据的选择。在一个小的测试中,我发现提交BB返回一个异常响应,但提交APL(苹果)正确返回一个股票报价。它看起来像API只是没有很好地设计和爆炸时,给出了一个请求的数据,它不管理?
顺便说一下,有时它也会返回APL的异常响应。看起来他们的API可能设计得不是很好。
您可以通过导航到http://www.webservicex.net/stockquote.asmx?op=GetQuote来测试它,它为您提供了一个允许提交测试的界面。

6psbrbz9

6psbrbz92#

首先,您需要确保您的Web服务是否正在运行。只有当它处于运行模式时,您才能访问Web服务。如果它没有运行,请首先运行它,然后从您的应用程序访问。

67up9zun

67up9zun3#

我尝试了下面的方法,它给了我一个有意义的错误浏览器,这有助于解决:

  • 转到IE中的工具/Internet选项菜单。
  • 点击高级选项卡,取消选中“显示友好的HTTP错误消息”选项,然后点击确定。
  • 尝试再次访问您的网页。现在您将看到更有意义的错误消息,这将有助于您解决问题

相关问题