POST /f HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight-2-b2, application/x-silverlight, */*
Referer: http://tieba.baidu.com/f?kz=452765250
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322)
Proxy-Connection: Keep-Alive
Content-Length: 820
Host: tieba.baidu.com
Pragma: no-cache
Cookie: BAIDUID=64DEBFC3CAEF043F46505983CFF1D4C8:FG=1; BDSTAT=6b1d638aece50b7d2bfe6e59d32e91c2a7efce1b8916fdfaab51f3deb68f458a; BD_UTK_DVT=1; _BDSC=1ct=385875968&tn=baiduSubmitPost&word=%B3%A4%B4%BA%D1%C7%CC%A9&lm=213195&z=452765250&sc=2&cm=0&rn=290153473&bs=4B8D54AF55BCD450CF1F6CC0094F1A80211F6A594427634C43B915398F153F3E1E1956C85D1F4510F410D6AC387835EDEEFFCE38951FD2D0119824C801&str2=13&rs3=0&str3=64DEBFC3CAEF043F46505983CFF1D4C8&str4=24757011213085648234&bu=http%3A%2F%2Ftieba.baidu.com%2Ff%3Fkz%3D452765250&ti=%BB%D8%B8%B4%A3%BA%BA%E9%B6%BC%C0%AD%CB%B9%B9%FA%B0%C2%D0%C5%D0%C4%CA%AE%D7%E3+%D0%A7%C1%A6%D6%D0%B3%AC%C7%F2%D4%B1%B3%C9%C3%D8%C3%DC%CE%E4%C6%F7%28%BC%D3%D3%CD%A1%A2%BF%A8%B0%CD%A3%A1%29&ti1=%BB%D8%B8%B4%A3%BA%BA%E9%B6%BC%C0%AD%CB%B9%B9%FA%B0%C2%D0%C5%D0%C4%CA%AE%D7%E3+%D0%A7%C1%A6%D6%D0%B3%AC%C7%F2%D4%B1%B3%C9%C3%D8%C3%DC%CE%E4%C6%F7%28%BC%D3%D3%CD%A1%A2%BF%A8%B0%CD%A3%A1%29+&co=%B6%A5&str1=http%3A%2F%2F&word1=eubr&Submit3=%B7%A2%B1%ED%CC%F9%D7%D3--------------------------------------------------------------------------POST /f HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight-2-b2, application/x-silverlight, */*
Referer: http://tieba.baidu.com/f?kz=452891772
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322)
Accept-Language: zh-cn
Accept-Encoding: gzip,deflate
UA-CPU: x86
Pragma: no-cache
Content-Type: application/x-www-form-urlencoded
Host: tieba.baidu.com
Cookie: BAIDUID=2BD2996A1DDA186B601BD183E6EC4BD1:FG=1; BDSTAT=6b1d638aece50b7d2bfe6e59d32e91c2a7efce1b8916fdfaab51f3deb68f458a; BD_UTK_DVT=1; _BDSC=1
Content-Length: 662ct=385875968&tn=baiduSubmitPost&word=%b3%a4%b4%ba%d1%c7%cc%a9&lm=213195&z=452891772&sc=2&cm=0&rn=404441725&bs=B6EC5D7588FD7A9031B3723D22CF4C54B8681D1E49EB8CBF6E2372DC3B5CE67CA8DDDB188952509E49E644CDA5F2A5E88F6560E3C6FF0F861E86294585B63FF70000004D479DE0D1&str2=&rs3=0&str3=2BD2996A1DDA186B601BD183E6EC4BD1&str4=35713253522172550874&ti=%bb%d8%b8%b4%a3%ba+%cd%ed%c9%cf%d4%db%c3%c7%d2%bb%cd%ac%ce%aa%b9%fa%b0%c2%bc%d3%d3%cd+%ce%d2%d4%da12%cc%a8&ti1=%bb%d8%b8%b4%a3%ba%cd%ed%c9%cf%d4%db%c3%c7%d2%bb%cd%ac%ce%aa%b9%fa%b0%c2%bc%d3%d3%cd+%ce%d2%d4%da12%cc%a8+&co=ding&str1=&word1=he3b&bu=http%3a%2f%2ftieba.baidu.com%2ff%3fkz%3d452891772&Submit3=%b7%a2%b1%ed%cc%fb%d7%d3
第一个是在ie中直接回复接收到的,第二个是在我做的程序中接收到的,除了Proxy-Connection: Keep-Alive的头没有加进去以外其他的都已经加进去了,可是在ie中可以回复成功,在我做的程序里就会把我的回复当做广告帖返回的是相应提示的html,我不知道是Http header的问题还是需要有我没注意到的

解决方案 »

  1.   

    以下是执行的代码:
                Uri URI = new Uri(URL);
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URI);
                
                request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight-2-b2, application/x-silverlight, */*";
                if (strReferer.Length == 0)
                {
                    request.Referer = "https://passport.baidu.com/";
                }
                else
                {
                    request.Referer = strReferer;
                }
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322)";            request.Headers["Accept-Language"] = "zh-cn";
                if (GZip)
                {
                    request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
                    request.Headers.Add("UA-CPU:   x86");
                    request.Headers.Add(HttpRequestHeader.Pragma, "no-cache");
                    request.ServicePoint.Expect100Continue = false;
                    request.KeepAlive = true;            }            //设置cookie
                if (request.CookieContainer == null)
                {
                    request.CookieContainer = new CookieContainer();
                }
     
                    foreach (System.Net.Cookie cookie in Cookies)
                    {
                        cookie.Domain = URI.Host;
                        if (cookie.Value.Length != 0)
                        {
                            request.CookieContainer.Add(cookie);
                        }                }            //提交的数据
                if (!string.IsNullOrEmpty(PostData))
                {
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.Method = "POST";
                    byte[] lbPostBuffer = encoding.GetBytes(PostData);                request.ContentLength = lbPostBuffer.Length;                Stream PostStream = request.GetRequestStream();
                    PostStream.Write(lbPostBuffer, 0, lbPostBuffer.Length);
                    PostStream.Close();
                }
      

  2.   

    向百度贴吧回复的url是http://tieba.baidu.com/f
      

  3.   

    有个细节:
    request.ContentType = "application/x-www-form-urlencoded"; 
    request.Method = "POST"; 
    byte[] lbPostBuffer = encoding.GetBytes(PostData); 
    这个encoding是什么?
    一般而言,application/x-www-form-urlencoded编码,特别是含有汉字的,需要使用
    System.Web.HttpUtility.UrlEncode()方法编码,引用System.Web.Dll。
    估计是你的程序中含有服务器无法转换的汉字字符!
      

  4.   

    恩,其实我在调用时就已经处理了foreach (string key in _baiduParams.Keys)
    {
        strPostData += string.Format("&{0}={1}", key, HttpUtility.UrlEncode(_baiduParams[key],Encoding.Default));
    }然后encoding是System.Text.Encoding.Default,可是返回的结果总是说是广告帖,如果验证码输入错误的话会返回验证码错的结果,就说明提交的data应该没错