gpt4 book ai didi

c# - 如何使用 .NET 以编程方式将信息发送到 C# 中的 Web 服务?

转载 作者:太空狗 更新时间:2023-10-29 20:18:27 26 4
gpt4 key购买 nike

我知道这算作重新发明轮子,但我需要知道如何通过 http/soap/xml 和 Web 消息与 Web 服务进行通信。原因是我需要与第三方 Web 服务通信才能工作,但 WSDL 或其他东西有问题,并且在使用 .NET 向导连接到它时无法正常工作。

所以,谁能给我一个过程/简单的例子/等等。如何做到这一点,或者任何人都可以给我一个解释它的地方的链接吗?我不太了解 Web 请求和响应。

如何构造和发送请求?如何解析响应?

这是一个简单网络服务的代码。假设 .asmx 的地址是“http://www.mwebb.com/TestSimpleService.asmx”:

using System;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace TestSimpleService
{
[WebService]
public class Soap : System.Web.Services.WebService
{
[WebMethod]
public string SayHello(string name)
{
return "Hello " + name + "!";
}
}
}

如何调用这个方法?

感谢任何帮助。

编辑

我真的只想知道如何将数据发送到网络服务。我可以获得所有方法/SOAP 操作/URL 数据,并且可以解析响应数据。我只是不知道要使用什么对象或如何使用它们。

如果有人知道一些简单的 .NET soap 客户端,例如 Python 中的 SUDS,那也会有所帮助。

最佳答案

如果您想直接通信,我会考虑使用 HTTPWebRequest,因为最终 Web 服务调用只是使用 HTTP POST 发送的 XML。

以下链接有一些示例:http://geekswithblogs.net/marcel/archive/2007/03/26/109886.aspx

作为一种在以编程方式与 .net 联系之前测试外部网络服务的方法,一种方法是使用像 SOAPUI 这样的测试工具。生成您认为需要发布到网络服务的确切 XML,并使用该工具手动发送它

然后您可以开发 .net 等价物

编辑 - 这是我根据上面的链接调用您的示例服务(使用 SOAP1.2)的一个简单示例:

        {
string soap = @"<?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://www.w3.org/2003/05/soap-envelope"">
<soap:Body>
<SayHello xmlns=""http://tempuri.org/"">
<name>My Name Here</name>
</SayHello>
</soap:Body>
</soap:Envelope>";

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:2439/Soap.asmx");
req.ContentType = "application/soap+xml;";
req.Method = "POST";

using (Stream stm = req.GetRequestStream())
{
using (StreamWriter stmw = new StreamWriter(stm))
{
stmw.Write(soap);
}
}

WebResponse response = req.GetResponse();
Stream responseStream = response.GetResponseStream();

// Do whatever you need with the response
Byte[] myData = ReadFully(responseStream);
string s = System.Text.ASCIIEncoding.ASCII.GetString(myData);
}

ReadFully 方法来自 http://www.yoda.arachsys.com/csharp/readbinary.html看起来它起源于 Jon Skeet。

关于c# - 如何使用 .NET 以编程方式将信息发送到 C# 中的 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com