none
请问我的程序为什么注册不上去账号 RRS feed

  • 问题

  •  HttpWebRequest MyRequest = (HttpWebRequest)WebRequest.Create("http://www.kshr.com.cn/ksasp/main/qsearch.asp");
                string str ="username=" + textBox1.Text.Trim() + "&password=" + textBox2.Text.Trim() + "&password1=" + textBox2.Text.Trim() + "&email=" + textBox3.Text.Trim() + "&web=www.sohu.com&name=fiii&address=jiangsu&postcode=299387&phone=13451177399";
                string str = "textfield=PE";
                MessageBox.Show(str);
                byte[] Info = Encoding.UTF8.GetBytes(str);
                MyRequest.Method = "POST";
                MyRequest.ContentType ="application/x-www-form-urlencoded"; 
                MyRequest.ContentLength = Info.Length;
                using (Stream stream = MyRequest.GetRequestStream())
                {
                    stream.Write(Info, 0, Info.Length);
                    HttpWebResponse MyResponse = (HttpWebResponse)MyRequest.GetResponse();
                    StreamReader sr = new StreamReader(MyResponse.GetResponseStream(), Encoding.Default);
                    string re = sr.ReadToEnd();
                    webBrowser1.DocumentText = re;
    如上代码,我从网站上看到是Post到本身网页的,可是怎么弄都注册不上,请达人指教.谢谢!
    2010年3月11日 14:13

答案

  • 对于request端来说,只有cookie,你要先获得服务器返回的cookie,然后附加在每次访问的head里。

    估计还是post格式不对,查询的那个也许服务器端用querystring的方式获得的,侥幸成功了吧。

    你可以在页面上打印一下收到的form数据,看看是不是你填的。
    霸王
    • 已建议为答案 mazhou 2010年3月12日 10:35
    • 已标记为答案 xuzhiqiang 2010年3月15日 0:41
    2010年3月12日 9:03
  • webbrowser端没有session的概念,只有cookie,你把cookie送过去就行了
    霸王
    • 已标记为答案 xuzhiqiang 2010年3月15日 0:41
    2010年3月14日 6:17

全部回复

  • 上面的代码似乎问题很多,也许是复制过来的问题吧,起码两个 string str 定义是不允许的。

    可能最关键的一点吧,POST 的数据格式跟get里的参数是完全两样的,你上面那一串送过去服务器根本不认识。
    霸王
    2010年3月11日 16:05
  • SORRY第二个STR是我测试用的,前面应该有个//来删除点,string str = "textfield=PE";这句是查询的,可以实现,但注册不行URL是http://www.kshr.com.cn/ksasp/person/regist.asp
     HttpWebRequest MyRequest = (HttpWebRequest)WebRequest.Create("http://www.kshr.com.cn/ksasp/person/regist.asp");
                string str ="username=" + textBox1.Text.Trim() + "&password=" + textBox2.Text.Trim() + "&password1=" + textBox2.Text.Trim() + "&email=" + textBox3.Text.Trim() + "&web=www.sohu.com&name=fiii&address=jiangsu&postcode=299387&phone=13451177399";
                MessageBox.Show(str);
                byte[] Info = Encoding.UTF8.GetBytes(str);
                MyRequest.Method = "POST";
                MyRequest.ContentType ="application/x-www-form-urlencoded";
                MyRequest.ContentLength = Info.Length;
                using (Stream stream = MyRequest.GetRequestStream())
                {
                    stream.Write(Info, 0, Info.Length);
                    HttpWebResponse MyResponse = (HttpWebResponse)MyRequest.GetResponse();
                    StreamReader sr = new StreamReader(MyResponse.GetResponseStream(), Encoding.Default);
                    string re = sr.ReadToEnd();
                    webBrowser1.DocumentText = re;
    2010年3月12日 1:10
  • 随便问下如果 HttpWebRequest登入某网站,如何将session对象传给webbrowser,以便webbrowser显示登入后的页面
    2010年3月12日 1:15
  • 頂起

    2010年3月12日 7:10
  • 对于request端来说,只有cookie,你要先获得服务器返回的cookie,然后附加在每次访问的head里。

    估计还是post格式不对,查询的那个也许服务器端用querystring的方式获得的,侥幸成功了吧。

    你可以在页面上打印一下收到的form数据,看看是不是你填的。
    霸王
    • 已建议为答案 mazhou 2010年3月12日 10:35
    • 已标记为答案 xuzhiqiang 2010年3月15日 0:41
    2010年3月12日 9:03
  • 您检查一下 StatusCode 返回了多少,然后 GetResponseBody() 里面的 Stream 的内容是什么,这对调试很有帮助。认同楼上的观点,可能真是 POST 的数据服务器不认识。


    Mark Zhou
    2010年3月12日 10:37
  • 因为刚接触这方面的编程,使用不是很了解,你们有“如何将session对象传给webbrowser,以便webbrowser显示登入后的页面”的代码或者实例吗?谢谢各位了

    2010年3月12日 13:24
  • HttpWebRequest登入某网站,如何将session对象传给webbrowser,以便webbrowser显示登入后的页面?顶上去
    2010年3月14日 5:33
  • webbrowser端没有session的概念,只有cookie,你把cookie送过去就行了
    霸王
    • 已标记为答案 xuzhiqiang 2010年3月15日 0:41
    2010年3月14日 6:17