gpt4 book ai didi

c# - 如何使用 C# (WCF) 转发 REST Web 服务?

转载 作者:行者123 更新时间:2023-11-30 16:27:44 25 4
gpt4 key购买 nike

有一个只能通过http 消费的web 服务和一个只能消费https web 服务的客户端。因此,我需要一些中介来转发在 https 中收到的请求并在 http 中返回响应。

假设中介完全是愚蠢的,除了它知道网络服务端点在哪里这一事实(即它不知道服务的签名是什么,它只知道它可以通过 http 与其通信web 请求,它监听一些 https uri,转发它收到的任何东西),实现这个最简单的方法是什么?

我整天都在研究这个问题,我不确定如何实现“愚蠢”的一点,即不知道用于传回逐字响应的签名。

最佳答案

哑中介本质上是代理。您最好的选择可能是只使用标准的 asp.net 页面(而不是像 ASMX 或 WCF 这样只会与您作对的服务功能),这样您就可以按原样接收请求并以简单的方式处理它使用标准请求/响应。您可以使用 HttpWebRequest 类将请求转发到其他端点。

  1. 客户要求https://myserver.com/forwarder.aspx?forwardUrl=http://3rdparty.com/api/login
  2. myserver.com(您的代理)读取查询字符串 forwardUrl 和任何包含的 POST 或 GET 请求。
  3. myserver.com 请求 http://3rdparty.com/api/login并传递从客户端发送的 GET 或 POST 数据。
  4. myserver.com 获取响应并将其作为响应发送回其他端点(本质上只是将Response.Write 内容发送到响应中)

您需要编写 forwarder.aspx 来处理请求。 forwarder.aspx 的代码应该是这样的(未经测试):

protected void Page_Load(object sender, EventArgs e)
{
var forwardUrl = Request.QueryString["forwardUrl"];
var post = new StreamReader(Request.InputStream).ReadToEnd();
var req = (HttpWebRequest) HttpWebRequest.Create(forwardUrl);
new StreamWriter(req.GetRequestStream()).Write(post);
var resp = (HttpWebResponse)req.GetResponse();
var result = new StreamReader(resp.GetResponseStream).ReadToEnd();
Response.Write(result); // send result back to caller
}

关于c# - 如何使用 C# (WCF) 转发 REST Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616535/

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