如何使用.NET 4代理REST API

问题描述 投票:4回答:1

我正在尝试在.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");
}
c# .net
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.