Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> httpwebrequest 
:(
    Опции темы
fromrus
Дата 25.12.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



есть сервер,к нему осуществляем запрос по connectionString,работаем с полученным ответом,затем закрываем сесссию по closeConString.
       
Код

  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(connectionString);
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
//работаем с ответом
resp.Close();
req= (HttpWebRequest)WebRequest.Create(closeConString);
              

Дело в том ,что сессия не закрывается!Знающие люди сказали,что 4 строкой я создыю НОВЫЙ объект ,а мен нуна применять к старому объекту всего лишь новый параметр.Не поверил,полез в мсдн,где вычитал что WebRequest.Create создает НОВыЙ экземпляр класса!Вопрос:как тоже самое сделать но тока к родному объекту?Или я что-то не так делаю в логике?
Спасибо
PM MAIL ICQ   Вверх
mihryak
Дата 26.12.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



что-то несуразно как-то всё
что значит "применить параметр", что значит "строка подключения" в контексте веб-запросов? есть урл, по которому надо обратиться с методом Get/Post (ну и ещё несколько)

приведи спецификацию работы со своим сервисом

пс. получение WebResponse'а заверни в using
Код

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
}



PM MAIL ICQ   Вверх
fromrus
Дата 26.12.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



сорри если не понятно)))
проще говоря сессия не закрывается по 4 строке...Почму?Счем это может быть связано?
PM MAIL ICQ   Вверх
mihryak
Дата 26.12.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



что есть сессия, и почему она должна закрываться?
4-ая строка - это resp.Close(); или req= (HttpWebRequest)WebRequest.Create(closeConString);?
если resp.Close();, то после неё запрос отключается

распиши порядок открытия-закрытия своих сессий, какой механизм принято использовать, что от тебя ждут?
(не стоит третий раз повторять уже написанное, нужно больше информации)
PM MAIL ICQ   Вверх
fromrus
Дата 11.1.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



есть база данных Cache ,к ней  я осуществляю Http запросы,после того как запросы проходят мне нужно закрыть сессию(в данном случае 1 запрос=1 новая сессия),так как лимит на кол-во одновременных сессий=25.Но закрывать ее нужно только по прошествии 3 секунд рабочей сессии.
Код

HttpWebRequest req=(HttpWebRequest)WebRequrest.Create(/* take data url*/);
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();//вот в этом месте сессия открывается
//working with data....
Thread.Sleep(3000);
resp.Close();
req=(HttpWebRequest)WebRequest.Create(/*close session url*/);// запросом этого адреса мы закрываем сесиию 

Проблема,как я писал в том,что 2-ой хттп запрос не проходит,т.е. сессия не закрывается и продолжает висеть...

Добавлено через 2 минуты и 1 секунду
сессия=время использования коннекта одним пользователем
PM MAIL ICQ   Вверх
fromrus
Дата 12.1.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



или вот еще вопрос:
есть строка запроса с русскими буквами,которая не работае ,как раз из-за них!Т.е. если в ИЕ забить эту строку то она вернет мне ответ,если попытаюсь сделать тоже через код-то вернет пустую строку...Как преобразовать русские буквы в строке в их шестнадцатиричный аналог?(регулярные выражения-я прально думаю?) И будет ли работать запрос в таком виде? Или есть другие выходы из этой ситуации? 

PM MAIL ICQ   Вверх
mihryak
Дата 12.1.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



русские буквы в query можно преобразоватать с помощью HttpUtility.UrlEncode

по основному вопросу ответить нечего, т.к. по-прежнему непонятна процедура работы с этой базой, а в доках копаться ну совсем лениво
PM MAIL ICQ   Вверх
PashaPash
Дата 12.1.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(fromrus @  11.1.2009,  13:47 Найти цитируемый пост)
Проблема,как я писал в том,что 2-ой хттп запрос не проходит,т.е. сессия не закрывается и продолжает висеть...

Добавь еще одну строчку с GetResponse(). До этого ничего никуда не посылается.


--------------------
PM MAIL WWW   Вверх
fromrus
Дата 13.1.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



давайте объясню по-другому:
Есть экземпляр класса окна ИЕ,в котором мы в строке адреса вводим разные адреса,т.е. сам ИЕ не меняется и остается тем же,но переходит по разным адресам...То же самое я хочу сделать и в программе,тут дело не в базе данных,а в языке:
Код

HttpWebRequest req=(HttpWebRequest)WebRequrest.Create(/* take data url*/);//создается экземпляр класса 
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();//получаем ответ соответствующий верхней строке запроса
//тут другой код
 req=(HttpWebRequest)WebRequrest.Create(/* close sesion url*/);//создается ДРУГОЙ экземпляр клаасса,т.к. метод Create класса WebRequest создает "...new insstanse of..."(взял из мсдн),вот тут то сессия и теряется 
 resp=(HttpWebResponse)req.GetResponse();//как результат получаем неправильный ответ соответствующий верхней строке запроса

Возможно,кто знает  другие классы для этих типичный задач,поскажите,пожалуйста!

Добавлено через 38 секунд
давайте объясню по-другому:
Есть экземпляр класса окна ИЕ,в котором мы в строке адреса вводим разные адреса,т.е. сам ИЕ не меняется и остается тем же,но переходит по разным адресам...То же самое я хочу сделать и в программе,тут дело не в базе данных,а в языке:
Код

HttpWebRequest req=(HttpWebRequest)WebRequrest.Create(/* take data url*/);//создается экземпляр класса 
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();//получаем ответ соответствующий верхней строке запроса
//тут другой код
 req=(HttpWebRequest)WebRequrest.Create(/* close sesion url*/);//создается ДРУГОЙ экземпляр клаасса,т.к. метод Create класса WebRequest создает "...new insstanse of..."(взял из мсдн),вот тут то сессия и теряется 
 resp=(HttpWebResponse)req.GetResponse();//как результат получаем неправильный ответ соответствующий верхней строке запроса

Возможно,кто знает  другие классы для этих типичный задач,поскажите,пожалуйста!
PM MAIL ICQ   Вверх
PashaPash
Дата 13.1.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



fromrus, по твоему коду не понятно к чему привязывыется сессия. Если к url (в виде phpsessionid какого-нибудь), то должно и так работать. Если к кукам - то сделай общий для обоих реквестов CookieContainer.


--------------------
PM MAIL WWW   Вверх
fromrus
Дата 15.1.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



да, и в правду сессия была привязана к кукам-огромное спасибо...
Код

HttpWebRequest req=(HttpWebRequest)WebRequrest.Create(/* take data url*/);
req.CookieContainer=new CookieContainer();
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();
HttpWebRequest req1=(HttpWebRequest)WebRequrest.Create(/* close sesion url*/);
req1.CookieContainer=req.CookieContainer;//вот та проблема))))) 
resp=(HttpWebResponse)req1.GetResponse();

Но вскоре встала другая проблема-тестил я на настолке,а писать мне для Вин Мобайл на нет сф...А там нет кукиКонтейнера((((((( smile Как можно передавать куки между запросами????
PM MAIL ICQ   Вверх
PashaPash
Дата 15.1.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



fromrus, в внимобайл есть headers, а куки - это набор http headers. Работай с ними ручками.


--------------------
PM MAIL WWW   Вверх
fromrus
Дата 15.1.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



Цитата(PashaPash @  15.1.2009,  13:13 Найти цитируемый пост)
а куки - это набор http headers

немогли бы вы привести небольшой пример по сохранению хотя бы одного заголовка от одного запроса к другому,а то я не допираю,спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.