2015-08-16 3 views
2

Мой код:WebClient отказ Войти

class MyWebClient : WebClient 
{ 
     private CookieContainer _cookieContainer = new CookieContainer(); 

     protected override WebRequest GetWebRequest(Uri address) 
     { 
      WebRequest request = base.GetWebRequest(address); 
      if (request is HttpWebRequest) 
      { 
       (request as HttpWebRequest).CookieContainer = _cookieContainer; 
      } 
      return request; 
     } 
} 

using (var client = new MyWebClient()) 
{ 
     var data = new NameValueCollection 
     { 
      { "username", "myUser" }, 
      { "password", "myPw" } 
     }; 
     client.UploadValues("http://www..tv/takelogin.php", data); 
} 

MNM3.4: Microsoft Network Monitor 3.4

Ответ: enter image description here Строительство моего приложения я использую 3 сайтов .. с 2 из них все в порядке, но с этим работает нет.

ответ

0

Я нашел проблему ...

client.UploadValues("http://www..tv/takelogin.php", data); 

изменено на:

client.UploadValues("http://.tv/takelogin.php", data); 

Это означает, что:

http://www.MY_SITE.tv 

не работают, но

http://MY_SITE.tv 

отлично работает.

0

Передача CookieContainer обычно делает трюк, но вы уже отправляете его. Можете ли вы подтвердить имена полей?

Кроме того, для некоторых веб-сайтов вам необходимо отправить скрытые поля. Я обычно делаю GET на странице входа и, используя парсер HTML (например, HtmlAgilityPack), я найду подходящую форму и POST запрос на вход со всеми полями INPUT/SELECT, которые я нахожу.

Я думаю, что лучший совет здесь - использовать прокси-сервер отладки, например Fiddler, и попытаться выполнить вход из браузера и проверить созданный трафик.

Смежные вопросы