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()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д