如何从.NET发布SOAP请求?
我有一个XML文件中的SOAP请求。我想将请求发布到.net中的web服务如何从.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发布 如果您想测试这是否有效,您
如何实现?您需要通过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操作值怎么办