我正在尝试在.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");
}