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