我正在尝试在.NET中编写一个简单的传递代理.
我在一些外部域(http://exampleapi.com)上托管了一个REST api,
我想通过发送到我的应用程序的所有请求(获取,发布等). JSONP不是一个选项.
所以,如果我要求GET localhost:1234 / api / pages =>获取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