Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
11 / 11 / 4
Регистрация: 09.07.2012
Сообщений: 70

Пост на строне сервера выполняется, а на стороне кода вылетает NullReferenceException

25.11.2014, 19:52. Показов 892. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
У меня возникла проблема при работе с xNet HttpRequest. В общем, у меня есть класс в котором я выполняю логин на портал, в этом же кассе есть еще пока что 2 метода, которые отрабатывают в нужный мне момент. Проблема вся в том, что методы почти идентичные (ну пост немного другой), 1й метод выполняется и на стороне сервера и на стороне клиента(программы), а 2й выполняется на стороне сервера, а на стороне программы вылетает NullReferenceException...

C#
1
2
3
4
5
6
7
8
9
10
public static HttpRequest Auth(string login, string pass)
        {
            var request = new HttpRequest();
            request.UserAgent = HttpHelper.ChromeUserAgent();
            request.Cookies = new CookieDictionary();
            string get = request.Get("http://www.webpage/login/").ToString();
            string post = request.Post("http://www.webpage/login/", "action=login&email=" + System.Web.HttpUtility.UrlEncode(login) + "&password=" + System.Web.HttpUtility.UrlEncode(pass, Encoding.GetEncoding(1251)) + "&remember=on", "application/x-www-form-urlencoded").ToString();
 
            return request;
        }
Метод 1
C#
1
2
3
4
5
public static void restoreHP(HttpRequest request)
        {
            request.AddField("X-Requested-With", "XMLHttpRequest");
            string post = request.Post("http://www.webpage/player/restorehp/", "action=restorehp", "application/x-www-form-urlencoded").ToString();
        }
Метод 2
C#
1
2
3
4
5
6
7
8
public static int spendGold(HttpRequest request, int playType)
        {
            int goldLeft = 0;
            request.AddField("X-Requested-With", "XMLHttpRequest");
            string post = request.Post("http://www.webpage/camp/gypsy/", "action=gypsyStart&gametype=" + playType + "", "application/x-www-form-urlencoded").ToString();
 
            return goldLeft;
        }
Подскажите плз че оно падает на request.Post, а запрос выполняется норм...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2014, 19:52
Ответы с готовыми решениями:

Обработка Кода JAVA на стороне сервера
Доброго времени суток. Т.к. достаточно часто последнее время приходиться работать мобильно нашел приложение для IOS, которое называется...

Можно ли создать Объект Excel на строне Web сервера (IIS)?
Можно ли создать Объект Excel на строне Web сервера (IIS) непример, как-нибудь так: Variant XL =...

Можно ли создать Объект Excel на строне Web сервера (IIS) ?
Можно ли создать Объект Excel на строне Web сервера (IIS) непример, как-нибудь так: Variant XL =...

4
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 44
25.11.2014, 20:28
1. Попробуй вместо
C#
1
request.AddField("X-Requested-With", "XMLHttpRequest");
это:
C#
1
request.AddHeader("X-Requested-With", "XMLHttpRequest");
И зачем функция должна возвращать HttpRequest?Почему не HttpResponse или string?



И попробуй по-другому параметры POST-запроса отправлять(на хабре(клик) это есть):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static int spendGold(HttpRequest request, int playType)
        {
            int goldLeft = 0;
            request.AddField("X-Requested-With", "XMLHttpRequest")
            
            var urlParams = new RequestParams();
 
            urlParams["action"] = "gypsyStart";
            urlParams["gametype"] = playType;
            
            string post = request.Post("http://www.webpage/camp/gypsy/", urlParams, "application/x-www-form-urlencoded").ToString();
 
            return goldLeft;
        }
Да и вообще снифай софт(c помощью HttpAnalyzer например), там ты сразу можешь увидеть в чем проблема(запрос не правильно построил, параметры не так передаются, заголовки левые и т.п.)
1
11 / 11 / 4
Регистрация: 09.07.2012
Сообщений: 70
25.11.2014, 21:28  [ТС]
Спасибо, помогло, думаю из-за параметров это было, но очень странно, т.к. 1й метод отрабатывает без данного подхода...

А HttpRequest возвращаю т.к. Post посылается с HttpRequest... может быть можно было бы более правильно все это сделать... но хз. может подскажешь если будет время и желание
0
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 44
25.11.2014, 22:45
Цитата Сообщение от Num2 Посмотреть сообщение
Спасибо, помогло, думаю из-за параметров это было, но очень странно, т.к. 1й метод отрабатывает без данного подхода...
А HttpRequest возвращаю т.к. Post посылается с HttpRequest... может быть можно было бы более правильно все это сделать... но хз. может подскажешь если будет время и желание
Пожалуйста!

к примеру:
C#
1
2
3
4
5
6
7
8
9
10
public static HttpRequest Auth(string login, string pass)
        {
            var request = new HttpRequest();
            request.UserAgent = HttpHelper.ChromeUserAgent();
            request.Cookies = new CookieDictionary();
            string get = request.Get("http://www.webpage/login/").ToString();
            string post = request.Post("http://www.webpage/login/", "action=login&email=" + System.Web.HttpUtility.UrlEncode(login) + "&password=" + System.Web.HttpUtility.UrlEncode(pass, Encoding.GetEncoding(1251)) + "&remember=on", "application/x-www-form-urlencoded").ToString();
 
            return request;
        }
Зачем вы тут используете кукисы, если они все равно нигде не инициализируются?
Если хотите получить кукисы от вашего POST-запроса, то так сделайте(если это и есть суть вашей ф-ции):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public static CookieDictionary Auth(string login, string pass)
        {
        CookieDictionary cook = new CookieDictionary();
            var request = new HttpRequest();
            request.UserAgent = HttpHelper.ChromeUserAgent();
            string get = request.Get("http://www.webpage/login/").ToString();
            HttpResponse post = request.Post("http://www.webpage/login/", "action=login&email=" + System.Web.HttpUtility.UrlEncode(login) + "&password=" + System.Web.HttpUtility.UrlEncode(pass, Encoding.GetEncoding(1251)) + "&remember=on", "application/x-www-form-urlencoded");
 
            cook = post.Cookies;
 
 
            return cook;
        }
И в след. ф-ции вы бы их передавали примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void restoreHP(CookieDictionary cook)
        {
        
            try{
                using(var request = new HttpRequest()){
        
                    request.AddField("X-Requested-With", "XMLHttpRequest");
                    request.Cookies = cook;
                    string post = request.Post("http://www.webpage/player/restorehp/", "action=restorehp", "application/x-www-form-urlencoded").ToString();
            
                    }
            
               }catch{}
        }
0
11 / 11 / 4
Регистрация: 09.07.2012
Сообщений: 70
26.11.2014, 01:47  [ТС]
В общем попробовал эти куки передавать, перестало работать, но потом обратил внимание так же и на логин ф-цию, она так же не отрабатывает корректно, возвращает простую страницу логина, но на сайте отображало якобы логин был. Попробовал как на хабре описано, но без результатов.... куки типа заполняются значением, но когда попробовал их присвоить и выполнить запрос - безпонту.. попробовал и все параметры логина запихнуть в RequestParams и без него, результат один и тот же.

В общем, переделать на кукки не получилось, а по-поводу того что вы выше написали, мне помогло
C#
1
request.AddHeader("X-Requested-With", "XMLHttpRequest");
, а с RequestParams(); как-то не получилось тоже...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2014, 01:47
Помогаю со студенческими работами здесь

Почему вылетает с ошибкой NullReferenceException?
Код модуля: unit GraphOptimized; uses GraphABC; const Radius = 5; type ///Location object

Почему вылетает System.NullReferenceException?
Привет народ ) есть класс using MaxAll.Facebooks; using MaxAll.View; using System.Threading; using System.Windows; using...

При работе программы вылетает исключение NullReferenceException
Добрый вечер, при работе программы выливает исключение на строчки вот само исключение //Copy rights are reserved for Akram kamal...

Почему вылетает с ошибкой NullReferenceException при закраске пикселя?
uses crt,GraphABC; type Point2D = class X, Y: real; constructor(px, py: real); begin X := px;Y :=...

C# на стороне сервера
Подскажите как я могу использовать C# На стороне сервера? Т.е. закинул на сервак и она пашет круглыми сутками. Возможно ли такое вообще...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru