XNet HttpResponse .ToString() Получание Text ответа сервера - C#
Формулировка задачи:
Приветствую!
Вопрос в большей степени для тех, кто использовал эту либу.
Сразу скажу, что да, можно стандартными шарповскими классами без доп либ написать это (Уже делал, но не выходит с поддержкой Socks4/5). Но ведь в либе есть туча готовых методов, что значительно сокращает затраты времени.
Да и проблема, возникающая у меня не из сложных думаю, однако никак не могу найти решение.
Сделал свой метод упрощающий использование запросов:
использование:
Так вот, вопрос.
в метод - все нормально. Text ответ от сервера выводится.
Так же если возвращать методом private HttpResponse GetRequest() значниe string - работает, но тогда надо делать метод Может кто помочь? цель - получить Req1.ToString(); в method1()
private HttpResponse GetRequest(string URL, MyProxy p, CookieDictionary cook, string UserAgent = null, RequestParams urlParams = null, bool FollowRedirects = false, List<MyHeader> headers = null)
{
try
{
HttpResponse response;
//response.
string Content;
using (var request = new HttpRequest())
{
switch (p.myProxyType)
{
case MyProxy.ProxyTypes.HTTP: request.Proxy = HttpProxyClient.Parse(p.adress_port); break;
case MyProxy.ProxyTypes.Socks4: request.Proxy = Socks4ProxyClient.Parse(p.adress_port); break;
case MyProxy.ProxyTypes.Socks5: request.Proxy = Socks5ProxyClient.Parse(p.adress_port); break;
}
//receive headers
foreach (MyHeader header in headers)
request.AddHeader(header.str_0, header.str_1);
request.AllowAutoRedirect = false;
request.UserAgent = UserAgent;
request.Cookies = cook;
response = request.Get(URL, urlParams);
log(response.ToString());
////// Т.к при использовании request.AllowAutoRedirect по каким-то причинам не возвращается вообще ничего в response, то делаем так:
if (FollowRedirects == true & response.HasRedirect)
{
while (response.HasRedirect)
{ response = request.Get(response.RedirectAddress, urlParams); }
}
Content = response.ToString();
log(Content);
}
return response;
}
catch (HttpException ex)
{
log2("Произошла ошибка при работе с HTTP-сервером:" + ex.Message);
switch (ex.Status)
{
case HttpExceptionStatus.Other:
log2("Proxy:" + p.ToString() + " Неизвестная ошибка");
break;
case HttpExceptionStatus.ProtocolError:
log2("Код состояния: {0}" + ex.HttpStatusCode);
break;
case HttpExceptionStatus.ConnectFailure:
log2("Не удалось соединиться с HTTP-сервером.");
break;
case HttpExceptionStatus.SendFailure:
log2("Не удалось отправить запрос HTTP-серверу.");
break;
case HttpExceptionStatus.ReceiveFailure:
log2("Не удалось загрузить ответ от HTTP-сервера.");
break;
}
return null;
}
}private void method1()
{
CookieDictionary cook = new CookieDictionary();
MyProxy p = new MyProxy("127.0.0.1:8888", MyProxy.ProxyTypes.HTTP);
List<MyHeader> headers = new List<MyHeader>();
HttpResponse Req1 = GetRequest("http://google.com", p, cook, User_Agent, headers: headers);
log(Req1.ToString());
log(Req1.Location);
log(Req1.StatusCode.ToString());
}private void method1()
не передается содержимоеReq1.ToString()
, ну никак. В примере, показанном выше в лог выведутся Req1.Location, Req1.StatusCode.ToString(), но не Req1.ToString(). Однако если вызвать log(Req1.ToString()); напрямую вprivate HttpResponse GetRequest()
private string GetRequest()
и соответственно тогда я не могу пользоваться всем возможностями класса HttpResponse. Так же пробовал возвращать Stream в method1() и получать text таким образом, но так же не работает private string response_GetString(HttpResponse response)
{
Stream responseStream = responseStream = response.ToStream();
//if (response.ContentEncoding.ToLower().Contains("gzip"))
// responseStream = new System.IO.Compression.GZipStream(responseStream, System.IO.Compression.CompressionMode.Decompress);
//else if (response.ContentEncoding.ToLower().Contains("deflate"))
// responseStream = new System.IO.Compression.DeflateStream(responseStream, System.IO.Compression.CompressionMode.Decompress);
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("UTF-8"));
string resp = reader.ReadToEnd();
return resp;
}Решение задачи: «XNet HttpResponse .ToString() Получание Text ответа сервера»
textual
Листинг программы
private void method1()