如何使用.NET 4代理REST API

我正在尝试在.NET中编写一个简单的传递代理。

我在一些外部域(http://exampleapi.com)上托管了一个REST api,

我想通过发送到我的应用程序的所有请求(获取,发布等)。 JSONP不是一个选项。

所以,如果我要求GET localhost:1234/api/pages => GET http://exampleapi.com/pages同样如果我发布POST localhost:1234/api/pages => POST http://exampleapi.com/pages

遇到的一个大问题,以及我在其他地方似乎找不到的问题 – 是我不想解析这个JSON。 我搜索过的所有东西似乎都围绕着HttpClient ,但我似乎无法弄清楚如何正确使用它。

这是我到目前为止所拥有的:

 public ContentResult Proxy() { // Grab the path from /api/* var path = Request.RawUrl.ToString().Substring(4); var target = new UriBuilder("http", "exampleapi.com", 25001); var method = Request.HttpMethod; var client = new HttpClient(); client.BaseAddress = target.Uri; // Needs to get filled with response. string content; HttpResponseMessage response; switch (method) { case "POST": case "PUT": StreamReader reader = new StreamReader(Request.InputStream); var jsonInput = reader.ReadToEnd(); // Totally lost here. client.PostAsync(path, jsonInput); break; case "DELETE": client.DeleteAsync(path); break; case "GET": default: // need to capture client data client.GetAsync(path); break; } return Content(content, "application/json"); } 

您需要创建HTTP服务器,接收请求,然后您的代码将从该请求中提取信息,并向新服务器生成新请求,接收响应,然后将响应发送回原始客户端。

客户端 – > C#服务器 – > Rest API服务器

这是一个开源的HTTP Server示例。 https://github.com/kayakhttp/kayak