c# – 如何使用.NET 4代理REST API

我正在尝试在.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

点赞