我们正在处理原始请求和响应。我们正在寻找从套接字读取原始HTTP消息,并将其转换为Microsoft.AspNet.Http.HttpRequest对象。我们希望响应相同,即将原始文本转换为可根据需要进行操作的Microsoft.AspNet.Http.HttpResponse对象。
问题: 如何使用ASP.NET 5中的新类将原始字符串转换为HttpRequest / HttpResponse对象?
编辑: 好的,所以上面显然不够清楚。这是一段代码片段,可以解读我们之后所做的事情:
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
}
答案 0 :(得分:2)
首先创建一个new DefaultHttpContext()
。这将为您设置所有收藏。然后,您可以根据需要设置属性。 https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNet.Http/DefaultHttpContext.cs#L34
我没有一个简单的示例供您实际解析请求,但我可以向您展示一个我使用HttpRequestMessage&来自客户端的HttpResponseMessage:https://github.com/Tratcher/HttpClient/blob/dev/src/Microsoft.Net.Http.Client/HttpConnection.cs#L29-L41
答案 1 :(得分:0)
你看过GitHub上的aspnet repo中的Proxy实现吗?
https://github.com/aspnet/Proxy
你可能从那里得到一些想法。我猜你想做这样的事情:
https://github.com/aspnet/Proxy/blob/dev/src/Microsoft.AspNetCore.Proxy/ProxyMiddleware.cs#L70