ASP.NET 表单 - 如何将表单数据发送到外部 WCF 服务

ASP.NET Form - How do I send form data to external WCF Service

我在一个单独的项目(API 的一部分)上有一个 WCF 服务。与我的网站完全分离。我在我的 ASP.NET 网站上创建了一个表单(从一个空网站开始,在 Visual Studio 2013 年)。

方法是什么。

  1. Read/collect 单击提交按钮时表单的值。
  2. 连接到远程 WCF 服务以post向它发送数据。
  3. 收到来自该 WCF 服务的响应?

我在网上看到了很多例子,但在那些例子中,所有的东西总是在一个项目中,我不确定什么属于哪里。

理想情况下,我想在没有 jQuery/AJAX 的情况下执行此操作,然后再考虑使用它们。

在我看来,您可以通过右键单击“项目”>“引用”将服务引用添加到项目,这样您就可以使用客户端代理调用服务方法class。 而如果服务调用通过 HTTP 传递,则可以使用 HttpClient/Webclient/HttpWebRequest class 向服务端点发送 post/get 请求。就像下面的代码一样。

实体。

 [DataContract]
public class BookInfo
{
    [DataMember]
    public string Name { get; set; }
}

方法.

static void Main(string[] args)
    {
        BookInfo bookInfo = new BookInfo()
        {
            Name = "Apple"
        };
        Console.WriteLine(callService(bookInfo));
    }
    private static string callService(BookInfo input)
    {
        string serviceUrl = "http://localhost:90/Service1.svc/booking";
        string stringPayload = "{\"bookInfo\":" + JsonConvert.SerializeObject(input) + "}";
        WebClient client = new WebClient();
        client.Headers["Content-type"] = "application/json";
        client.Encoding = Encoding.UTF8;
        string rtn = client.UploadString(serviceUrl, "POST",stringPayload);
        return rtn;
    }

HttpClient更加简洁易用,这里是一些官方文档。

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?redirectedfrom=MSDN&view=netframework-4.7.2