如何从.NET发布SOAP请求?

如何从.NET发布SOAP请求?,.net,xml,web-services,soap,.net,Xml,Web Services,Soap,我有一个XML文件中的SOAP请求。我想将请求发布到.net中的web服务 如何实现?您需要通过HTTP发布数据。使用来发布数据。您需要在post请求中发送其他数据,以确保您拥有有效的SOAP信封。阅读所有详细信息。这不是正常的方式。通常,您会使用WCF或旧式web服务引用为您生成代理客户端 但是,通常需要使用HttpWebRequest连接到URL,然后在请求正文中发送XML。我想知道XML是如何生成的,它是有效的SOAP消息吗?你可以按照上面的建议通过HTTP发布 如果您想测试这是否有效,您

我有一个XML文件中的SOAP请求。我想将请求发布到.net中的web服务
如何实现?

您需要通过HTTP发布数据。使用来发布数据。您需要在post请求中发送其他数据,以确保您拥有有效的SOAP信封。阅读所有详细信息。

这不是正常的方式。通常,您会使用WCF或旧式web服务引用为您生成代理客户端


但是,通常需要使用HttpWebRequest连接到URL,然后在请求正文中发送XML。

我想知道XML是如何生成的,它是有效的SOAP消息吗?你可以按照上面的建议通过HTTP发布

如果您想测试这是否有效,您可以尝试一下(我的意思是测试)。

var uri=new uri(“http://localhost/SOAP/SOAPSMS.asmx/add");
var req=(HttpWebRequest)WebRequest.CreateDefault(uri);
req.ContentType=“text/xml;charset=utf-8”;
请求方法=“POST”;
req.Accept=“text/xml”;
请求标题添加(“SOAPAction”http://localhost/SOAP/SOAPSMS.asmx/add"); 
var strSoapMessage=@”
235
"; 
使用(var stream=newstreamwriter(req.GetRequestStream(),Encoding.UTF8))
stream.Write(strSoapMessage);

我做过类似的工作,手动构建xml请求,然后使用webrequest对象提交请求:

string data=“要提交的xml文档”;
string url=“Web服务url”;
string response=“来自服务器的响应”;
//生成请求对象以将数据/xml传递给服务器
byte[]buffer=Encoding.ASCII.GetBytes(数据);
HttpWebRequest-request=WebRequest.Create(url)为HttpWebRequest;
request.Method=“POST”;
request.ContentType=“application/x-www-form-urlencoded”;
request.ContentLength=buffer.Length;
Stream post=request.GetRequestStream();
//发布数据并关闭连接
post.Write(缓冲区,0,缓冲区长度);
post.Close();
//生成响应对象
HttpWebResponse=request.GetResponse()作为HttpWebResponse;
Stream responsedata=response.GetResponseStream();
StreamReader responsereader=新的StreamReader(responsedata);
response=responsereader.ReadToEnd();
代码开头的字符串变量是您设置的,然后您会从服务器得到一个字符串响应(希望是…)。

下面是另一个示例--这是VB中的一个:

    Dim manualWebClient As New System.Net.WebClient()

    manualWebClient.Headers.Add("Content-Type", "application/soap+xml;  charset=utf-8")

    ' Note: don't put the <?xml... tag in--otherwise it will blow up with a 500 internal error message!
    Dim bytArguments As Byte() = System.Text.Encoding.ASCII.GetBytes( _
        "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">" & System.Environment.NewLine & _
        "  <soap12:Body>" & System.Environment.NewLine & _
        "    <Multiply xmlns=""http://cptr446.class/"">" & System.Environment.NewLine & _
        "      <x>5</x>" & System.Environment.NewLine & _
        "      <y>4</y>" & System.Environment.NewLine & _
        "    </Multiply>" & System.Environment.NewLine & _
        "  </soap12:Body>" & System.Environment.NewLine & _
        "</soap12:Envelope>")
    Dim bytRetData As Byte() = manualWebClient.UploadData("http://localhost/CPTR446.asmx", "POST", bytArguments)

    MessageBox.Show(System.Text.Encoding.ASCII.GetString(bytRetData))
Dim manualWebClient作为新系统.Net.WebClient()使用
manualWebClient.Headers.Add(“内容类型”,“应用程序/soap+xml;字符集=utf-8”)

“注意:不要把抱歉撞到了一个旧的线程这里是我的解决办法

''' <summary>
''' Sends SOAP to a web service and sends back the XML it got back.
''' </summary>
Public Class SoapDispenser
    Public Shared Function CallWebService(ByVal WebserviceURL As String, ByVal SOAP As String) As XmlDocument
        Using wc As New WebClient()
            Dim retXMLDoc As New XmlDocument()

            wc.Headers.Add("Content-Type", "application/soap+xml; charset=utf-8")
            retXMLDoc.LoadXml(wc.UploadString(WebserviceURL, SOAP))

            Return retXMLDoc
        End Using
    End Function
End Class
“”
''将SOAP发送到web服务,并将其返回的XML发送回。
''' 
公共类皂液分配器
公共共享函数CallWebService(ByVal WebserviceURL作为字符串,ByVal SOAP作为字符串)作为XmlDocument
将wc用作新的WebClient()
Dim retXMLDoc作为新的XmlDocument()
Add(“内容类型”,“应用程序/soap+xml;字符集=utf-8”)
retXMLDoc.LoadXml(wc.UploadString(WebserviceURL,SOAP))
返回retXMLDoc
终端使用
端函数
末级

lol,“阅读soap规范”。。。几年后,他留着胡子回来,被送进精神病院。SOAP规范相对简单,最糟糕的是WS-Anwhere规范。现在我正在尝试与你发布的代码相同的代码。但我得到了不受支持的媒体类型,那就是请求。ContentType,你应该尝试“text/xml”(我认为)对于一个标准的asp.net web服务。它开始为ASMX服务工作。现在我想发布WCF服务的SOAP请求。如何实现它。使用此代码(在修复了关于两个名为“response”的变量的错误后)并将内容类型更改为“text/xml”对我有效。嗨,如果我的xml中没有SOAP操作值怎么办