2015-10-19 4 views
3

Мы манипулируем необработанными запросами и ответами. Мы хотим прочитать сырое HTTP-сообщение из сокета и преобразовать его в объект Microsoft.AspNet.Http.HttpRequest. Мы хотим сделать то же самое для ответов, которые преобразуют исходный текст в объект Microsoft.AspNet.Http.HttpResponse, который можно манипулировать по мере необходимости.Необработанные строки в HttpRequest/HttpResponse с использованием ASP.NET 5?

Вопрос: Как преобразовать необработанные строки в объекты HttpRequest/HttpResponse, используя новые классы в ASP.NET 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 
} 

ответ

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

+0

Это действительно близко к тому, что мы ищем. Насколько надежным является частный метод «CreateResponseMessage»? Вот где пакет nuget для этой DLL, если кто-то еще ищет: http://blogs.msdn.com/b/martinkearn/archive/2015/06/17/using-httpclient-with-asp-net- 5-0.aspx –

+0

FYI: пакет Microsoft.Net.Http.Client устарел, так как System.Net.Http теперь работает на CoreClr, mac, linux и т. Д. – Tratcher

+0

Нет, это не очень надежный код. Это был минимальный прототип, который запускался на CoreClr через Sockets, пока мы ждали System.Net.Http. Он отлично работал для того, в чем мы нуждались, но это не упрощенное решение общего назначения. Сторона примечания: HTTP требует «\ r \ n» строк, а не «\ n», как показано в примере выше. – Tratcher

0

вы смотрели на реализацию прокси в САШ репо на GitHub ли?

https://github.com/aspnet/Proxy

Вы можете получить некоторые идеи оттуда. Я предполагаю, что вы хотите сделать что-то вроде этого:

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

+0

Эй, вторая ссылка is dead :) – Alex

+0

Исправлено ......! ;) – Andreas

Смежные вопросы