> C# file download через php запрос.
 Lexus Member is Offline
 Posted: 23-04-2009, 16:00 (post 1, #891010)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
Ситуация:
Есть сайт на котором надо логинится, толко тогда появляются линки на скачивание.

линки такого вида: ...file.php/blabla.rar

Я логинюсь на сайт, беру куки в куки контейнер.
дальше делаю:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

куки ясно прицепляю к запросу.

и на resp прога выдаёт timeout, хотя если делать request не на файл, а на любую страницу, то всё идет на ура и я получаю просто html той страницы.

Чего я не так понял в reg/res системе шарпа?
PM Email Poster Users Website
Top Bottom
 Brait Member is Offline
 Posted: 24-04-2009, 05:14 (post 2, #891117)

Ответственный за БД
Group: Roots
Group: Roots
Posts: 3779
Какой-нибудь proxy-ёй (hint: Naviscope) либо packet sniffer-ом (hint: Iris network Traffic Analyser) глянь, возможно C# неправильно запрос формирует...
PM
Top Bottom
 LF_ Member is Offline
 Posted: 24-04-2009, 05:39 (post 3, #891118)

Hand of Doom
Group: Roots
Group: Roots
Posts: 17384
есть даровый снифер - http://www.wireshark.org/
PM
Top Bottom
 Set Member is Offline
 Posted: 24-04-2009, 20:30 (post 4, #891199)

Visionary

Group: Members
Posts: 5181
Warn:0%-----
Может там реферер чекается для антиличивости.
PM
Top Bottom
 Lexus Member is Offline
 Posted: 24-04-2009, 21:01 (post 5, #891207)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
Покапал и выкапал. Что запрос идёт пралоьно, а не прально пашит второй запрос.
Т.е .если я делаю первым запросом логин и забираю кукисы.
Вторым запросом шлю запрос скачку и прицепляю кукисы - всё ок
и если я делаю ещё один запрос поху куда (второй файл, главная страница), то получаю timeout
PM Email Poster Users Website
Top Bottom
 Set Member is Offline
 Posted: 25-04-2009, 19:46 (post 6, #891368)

Visionary

Group: Members
Posts: 5181
Warn:0%-----
Может куки меняются?
PM
Top Bottom
 Lexus Member is Offline
 Posted: 26-04-2009, 12:00 (post 7, #891452)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
Секс продолждается. Попарившись, выяснил:
Иногда получается 2-3 запроса сделать, иногда 1-2.
Вот код:
QUOTE
string loginData = "username=UserLogin&password=UserPass";

Uri uri = new Uri("http://testpage.de");
CookieContainer cookieContainer = new CookieContainer();

HttpWebRequest sessionRequest = (HttpWebRequest)WebRequest.Create(uri);
sessionRequest.CookieContainer = new CookieContainer();
cookieContainer = sessionRequest.CookieContainer;
HttpWebResponse sessionResponse = (HttpWebResponse)sessionRequest.GetResponse();
sessionResponse.Close();



// Login
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://testpage.de/login.php");
req.CookieContainer = cookieContainer;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] loginDataBytes = encoding.GetBytes(loginData);
req.ContentLength = loginDataBytes.Length;
Stream stream = req.GetRequestStream();
stream.Write(loginDataBytes, 0, loginDataBytes.Length);
stream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();

// 2nd scratch
Encoding encodingRu = System.Text.Encoding.GetEncoding("windows-1251");
req = (HttpWebRequest)HttpWebRequest.Create(textBoxLink.Text);
req.CookieContainer = cookieContainer;
req.Method = "GET";
req.ContentType = "text/html";



res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), encodingRu);

inputText.Text = sr.ReadToEnd();
MessageBox.Show(res.StatusCode.ToString());
res.Close();
sr.Close();

textBoxLink.Text - с формы забирается стринг с линком.
Вся функция весит под кнопкой
Timeout выбивает всегда на красной строке
PM Email Poster Users Website
Top Bottom
 Brait Member is Offline
 Posted: 27-04-2009, 10:53 (post 8, #891568)

Ответственный за БД
Group: Roots
Group: Roots
Posts: 3779
Стоило-бы проверить переменную textBoxLink, что в ней содержится, валидный ли URL? И еще, может стоит выдержать небольшую паузу между логином и запросом файла? А коннект логина точно закрылся? Кстати, о печенюшках: cookie после логина очень даже могли смениться...
PM
Top Bottom
 Lexus Member is Offline
 Posted: 27-04-2009, 11:03 (post 9, #891570)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
url 100% валидный, в кукас стоит что действительны до 2030 года.
Больше всего, что я не понимаю, почему то 3 то 2 запроса проходят. Ладно ни одного или хоть сколько :))
PM Email Poster Users Website
Top Bottom
 Set Member is Offline
 Posted: 27-04-2009, 20:51 (post 10, #891642)

Visionary

Group: Members
Posts: 5181
Warn:0%-----
Строку req.ContentType = "text/html"; убрать для GET.
PM
Top Bottom
 Lexus Member is Offline
 Posted: 28-04-2009, 00:25 (post 11, #891678)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
жо найдено, была по тупости два раза resзщтыу вызвана, что вешала всё дело.
PM Email Poster Users Website
Top Bottom
 Lord KiRon Member is Offline
 Posted: 28-04-2009, 16:57 (post 12, #891692)

Part time flamer

Group: Read Only
Posts: 7784
Warn:0%-----
QUOTE (Lexus @ 27-04-2009, 23:25)
жо найдено, была по тупости два раза resзщтыу вызвана, что вешала всё дело.
А по руссקи ? :diablo:
PM
Top Bottom
 Lexus Member is Offline
 Posted: 28-04-2009, 20:49 (post 13, #891721)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (Lord KiRon @ 28-04-2009, 15:57)
QUOTE (Lexus @ 27-04-2009, 23:25)
жо найдено, была по тупости два раза resзщтыу вызвана, что вешала всё дело.
А по руссקи ? :diablo:
Как я не навижу пунтусвичера и не могу без него :)))

response должно было стоять :)))
PM Email Poster Users Website
Top Bottom
 Brait Member is Offline
 Posted: 29-04-2009, 04:14 (post 14, #891782)

Ответственный за БД
Group: Roots
Group: Roots
Posts: 3779
Так отключи у него автозамену. У меня он ради двух фич - переключение раскладок одним Ctrl, и история ClipBoard-а. Ну и еще иногда Shift-Break для введенного при неправильного выбранной раскладке.
PM
Top Bottom
 Lexus Member is Offline
 Posted: 29-04-2009, 07:41 (post 15, #891788)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (Brait @ 29-04-2009, 03:14)
Так отключи у него автозамену. У меня он ради двух фич - переключение раскладок одним Ctrl, и история ClipBoard-а. Ну и еще иногда Shift-Break для введенного при неправильного выбранной раскладке.
А я для буфера clipdiary юзаю, весчь!!!!

Как-то привык, что он сам переключает и даже иногда терплю через попность :)))
PM Email Poster Users Website
Top Bottom
Topic Options