我想在C#.NET中使用HTTP發佈來發送到URL的SOAP消息(包括頭文件)。我想要發送給它的URL不是一個Web服務,它只是接收SOAP消息以最終從中提取信息。任何想法如何做到這一點?C#.NET中通過HTTP發佈的SOAP對象
12
A
回答
15
首先您需要創建一個有效的XML。我使用LINQ到XML來實現這一點,就像如下:
XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
var document = new XDocument(
new XDeclaration("1.0", "utf-8", String.Empty),
new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", soapenv),
new XElement(soapenv + "Header",
new XElement(soapenv + "AnyOptionalHeader",
new XAttribute("AnyOptionalAttribute", "false"),
)
),
new XElement(soapenv + "Body",
new XElement(soapenv + "MyMethodName",
new XAttribute("AnyAttributeOrElement", "Whatever")
)
)
);
然後,我用它發送(編輯:添加XDocument.ToString()
到這裏)
var req = WebRequest.Create(uri);
req.Timeout = 300000; //timeout
req.Method = "POST";
req.ContentType = "text/xml;charset=UTF-8";
using (var writer = new StreamWriter(req.GetRequestStream()))
{
writer.WriteLine(document.ToString());
writer.Close();
}
如果我要讀一些響應,我這樣做(這是上面的代碼的後續):
using (var rsp = req.GetResponse())
{
req.GetRequestStream().Close();
if (rsp != null)
{
using (var answerReader =
new StreamReader(rsp.GetResponseStream()))
{
var readString = answerReader.ReadToEnd();
//do whatever you want with it
}
}
}
0
上面的代碼中缺少一個括號,並有一個額外的逗號,我固定在這裏:
XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
var document = new XDocument(
new XDeclaration("1.0", "utf-8", String.Empty),
new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", soapenv),
new XElement(soapenv + "Header",
new XElement(soapenv + "AnyOptionalHeader",
new XAttribute("AnyOptionalAttribute", "false")
)
),
new XElement(soapenv + "Body",
new XElement(soapenv + "MyMethodName",
new XAttribute("AnyAttributeOrElement", "Whatever")
)
)
)
);
相關問題
- 1. 通過$ http發佈對象
- 2. HTTP通過PostAsJsonAsync發佈多個對象
- 3. 通過Net :: HTTP發送Ruby中的http發佈請求
- 4. 通過HTTP在C套接字中發送的SOAP消息
- 5. C#發送對象與SOAP
- 6. XML SOAP消息的HTTP HTTP發佈
- 7. Android通過https發送SOAP對象通過ksoap2 2.5.8
- 8. 通過HTTP POST發送XML對象
- 9. 通過HTTP發佈XML - Webforms
- 10. .NET 4.5 - 通過HttpPost發送SOAP請求
- 11. 發佈通過Html.BeginForm()的複雜對象
- 12. 我想通過Windows發佈SOAP信封
- 13. 通過活動巴士發佈對象
- 14. SAP和.Net通過SOAP
- 15. 在C中使用SOAP通過web服務傳遞對象#
- 16. 通過ASP.net發送HTTP發佈請求
- 17. 使通過SOAP發送的對象的方法可見
- 18. .NET MVC 4 HTTP將數據發佈爲JSON對象
- 19. 如何使用AngularJS $ http將對象+數組發佈到WebApi .NET/C#控制器?
- 20. .NET 4.0中的HTTP發佈問題
- 21. 如何通過.NET 3.5中的NamedPipe發送對象?
- 22. 通過分佈式對象代替代理髮送對象
- 23. iphone對象c是已發佈對象
- 24. 發佈目標中的對象C
- 25. 發佈managedObjectContext對象C
- 26. 通過上傳Objective-C的HTTP發佈照片
- 27. 針對.NET WCF的Java HTTP發佈 - 「EndpointDispatcher中的ContractFilter不匹配」
- 28. 通過grunt發佈HTTP數據
- 29. 已通過HTTP發佈令牌驗證
- 30. QNetworkAccessManager:通過HTTP發佈文件
你說得對,有一個更簡單的方法來將'XDocument'轉換爲字符串。這是'ToString()'方法。有一個重載,可讓您指定是否要縮進和格式化XML(默認爲格式化)。 – 2009-11-25 21:12:44
謝謝你,改變了我的代碼和上面的例子。 – 2009-11-26 07:58:26
這是什麼「使用」? – baash05 2011-04-19 23:01:30