如何在C#中为肥皂编写客户端

时间:2019-03-30 10:09:01

标签: c# soap webservice-client

我有一个使用SOAP UI测试过的项目文件。

enter image description here

现在我想将其写在客户端,因此通过查看此solution,我试图使事情起作用。但是我有一个问题。

在解决方案中,提到了URLaction。我有一个URL,但不确定action URL是什么。所以我把两者都放了。

var _url = "http://111.111.111.1:111/HES/services/DoCommandRequest";
        var _action = "http://111.111.111.1:111/HES/services/DoCommandRequest";

 XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
        HttpWebRequest webRequest = CreateWebRequest(_url, _action);
        InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);

        // begin async call to web request.
        IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null);

        // suspend this thread until call is complete. You might want to
        // do something usefull here like update your UI.
        asyncResult.AsyncWaitHandle.WaitOne();

        // get the response from the completed web request.
        string soapResult;
        using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))
        {
            using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
            {
                soapResult = rd.ReadToEnd();
            }
            Console.Write(soapResult);
        }

运行代码后,我在using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))遇到了一个异常

  

System.Net.WebException   {“远程服务器返回错误:(500)内部服务器错误。”}

我相信我的action有问题,但是我不确定。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

SOAPAction 在 SOAP 1.1 中是必需的,但可以为空 ("")。 See the comment here

首先,您应该尝试使用指向 wsdl 文件的链接创建新的 SOAP 项目。之后尝试从 SOAP UI 请求。尝试运行“doCommand”操作。看看结果。比您可以将它与您的应用程序的请求进行比较。您还可以使用 Fiddler 来插入您的请求并进行比较以找出不同之处。