2015-08-16 147 views
2

我的代码:Web客户端登录失败

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),找到适当的表单并找到所有INPUT/SELECT字段的登录请求。

我认为这里最好的建议是使用调试代理,如Fiddler,并尝试从浏览器执行登录并检查生成的流量。