使用ASP将原始字符串转换为HttpRequest/HttpResponse.净5

本文关键字:HttpRequest HttpResponse 转换 ASP 原始 字符串 使用 | 更新日期: 2023-09-27 18:18:18

我们正在处理原始请求和响应。我们希望从套接字读取原始HTTP消息,并将其转换为Microsoft.AspNet.Http.HttpRequest对象。我们希望响应也是这样,即将原始文本转换为Microsoft.AspNet.Http.HttpResponse对象,该对象可以根据需要进行操作。

问题:如何将原始字符串转换为HttpRequest/HttpResponse对象,使用ASP中的新类。净5 ?

编辑:显然,上面的内容还不够清楚。下面是一段代码片段,它得到了我们所追求的核心内容:

static void Main()
{
    string http = @"CONNECT www.google.com:443 HTTP/1.0" + "'r'n" +
                "Host: www.google.com:443" + "'r'n" +
                "Content-Length: 0" + "'r'n" +
                "Proxy-Connection: Keep-Alive" + "'r'n" +
                "Pragma: no-cache" + "'r'n" +
                "'r'n'r'n";
     Microsoft.AspNet.Http.HttpRequest request = ParseHttp(http);
}
static Microsoft.AspNet.Http.HttpRequest ParseHttp(string http)
{
    //Magic goes here
}

使用ASP将原始字符串转换为HttpRequest/HttpResponse.净5

首先创建一个new DefaultHttpContext()。这样你就能把所有的收藏都准备好了。然后,您可以根据需要设置属性。https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNet.Http/DefaultHttpContext.cs吧

我没有一个简单的例子来解析请求,但我可以给你看一个我用HttpRequestMessage做了非常类似的事情;来自客户端的HttpResponseMessage: https://github.com/Tratcher/HttpClient/blob/dev/src/Microsoft.Net.Http.Client/HttpConnection.cs#L29-L41

您看过GitHub上aspnet repo中的代理实现吗?

https://github.com/aspnet/Proxy

你可能会从中得到一些想法。我猜你想做这样的事情:

https://github.com/aspnet/Proxy/blob/dev/src/Microsoft.AspNetCore.Proxy/ProxyMiddleware.cs L70