0

Т.к мне часто приходится делать гет запросы я вывел все в отдельную функцию

HttpResponse GET(string url, string useragent, CookieDictionary cookies, string proxx)
{
    try
    {
        using (var request = new HttpRequest())
        {

            if (proxx != "")
                request.Proxy = Socks5ProxyClient.Parse(proxx);
            request.Cookies = cookies; request.IgnoreProtocolErrors = true;
            request.UserAgent = useragent;
            request.AddHeader("Upgrade-Insecure-Requests", "1");
            var txtresult = request.Get(url);
            return txtresult;
        }

    }
    catch
    {
        return null;
    }
}

Вызываю так:

var txtresult = GET("https://whoer.net/ru", "", null, proxx).ToString();

В результате получаю ошибку Ссылка на объект не указывает на экземпляр объекта.. Такая же ошибка, если принять httpresponse, а потом вытащить исх код

 var result = GET("https://whoer.net/ru", "", null, proxx);
 txtresult = result.ToString();

Хотя кукисы и тп получаю без проблем.

Если в самой функции остановить и проверить, что выдает var rrr = txtresult.ToString(); , то туда записывается исх код страницы. Куда он девается, когда я получаю результат ?

Lolidze
  • 1,370
  • А в какой конкретно строке вылетает? Какая конкретно переменная равна null в момент обращения? – VladD Sep 23 '17 at 12:10
  • @VladD на строке, где присутствует .ToString(). Я привел 2 примера вызова:
    1. var txtresult = GET("https://whoer.net/ru", "", null, proxx).ToString();- вылетает ошибка тут
    2. txtresult = result.ToString();- вылатает ошибка тут

    При этом в самой функции проверяю результат .ToString(); - и дает все верно

    – Lolidze Sep 23 '17 at 12:16
  • @VladD "Какая конкретно переменная равна null в момент обращения?" - если я вас правильно понял, то ни одна. – Lolidze Sep 23 '17 at 12:21
  • @Lolidze: Ну у вас внутри функции происходит исключение, и вы его подавили возвратом null. Берите отладчик и выясняйте, что за исключение у вас. – VladD Sep 23 '17 at 12:24
  • @VladD так нет, исключение не возникает в самой функции. Это, видимо, баг у библиотеки xNet. Заметил : если я в функции перед return присвою какой-то переменной значение .ToString() , тобишь исх код, то в результате от функции я не получу ошибку, а просто пустую строку, иначе же будет ошибка – Lolidze Sep 23 '17 at 12:24
  • @Lolidze: Если исключение не возникает в функции, попробуйте убрать try/catch на время. И выясните в отладчике, какое в точности выражение равно null. При необходимости введите дополнительные переменные. – VladD Sep 23 '17 at 12:27
  • @VladD var result = GET("https://whoer.net/ru", "", null, proxx); // переменная не равна null, да и в событиях не вижу ошибки + отладчиком останавливал в функции на return, все нормально txtresult = result.ToString(); // а вот тут уже ошибка – Lolidze Sep 23 '17 at 12:27
  • @Lolidze: Чудеса какие-то, так не бывает. Да, а txtresult — это локальная переменная, поле или свойство? – VladD Sep 23 '17 at 12:28
  • @VladD у меня много случаев магии с .ToString(); в библиотеке xNET. txtresult - это локальная переменная, ее я объявляю выше, как стринг. Если хотите, я по тимвиверу все покажу – Lolidze Sep 23 '17 at 12:31
  • @Lolidze: Я с телефона, у меня не выйдет. – VladD Sep 23 '17 at 12:32
  • @Lolidze: Раз магия, то поймайте исключение (nullreferenceexception) и дайте его StackTrace. – VladD Sep 23 '17 at 12:33
  • @VladD где мне его ловить ? ведь в функции тот же самый .tostring() не дает ошибки, он возвращает исх код. Я проверял вплоть до return , все было норм. Я, конечно, могу извратиться и возвращать 2 значения через tuple, ведь в функции у меня tostring() не вызывает ошибки, но хотелось бы более цивильно и удобнее. Не понимаю, почему выходит ошибка – Lolidze Sep 23 '17 at 12:37
  • @Lolidze: Ловите там, где вы его получаете. И проверьте переменную на null перед обращением на всякий случай. – VladD Sep 23 '17 at 12:41
  • Кратко: у вас ошибка в строчке return null; – Pavel Mayorov Sep 27 '17 at 09:03
  • @PavelMayorov разве ? я убрал try catch и соответственно return null; , но ошибка при получении исх кода .tostring() осталась при этом куки, хэдеры и тп получаю хорошо – Lolidze Sep 27 '17 at 12:21
  • @Lolidze а почему вы не исправили свой вопрос? – Pavel Mayorov Sep 27 '17 at 12:22
  • @PavelMayorov всм ? дело же не в try catch и возвращаемом return null; было. Я вообще хз в чем дело, я сделал так : записал в переменную исх код страницы (в самой функции) и возвращаю через tuple 2 значения. – Lolidze Sep 27 '17 at 13:13

0 Answers0