我用HttpWebRequest进行GET请求某网址,返回错误代码:414然后我在网上查询了一下,这个414代码的解释是这样的:错误代码:414414错误是由于请求的 URI 太长,服务器拒绝处理请求而造成的。一般的可能性有:
1)客户端错误地将 POST 请求转换为带有长查询信息的 GET 请求。
2)或者是客户端遇到重定向问题(例如,重定向 URL 的前缀指向自身的后缀)。
3)服务器遭到客户端的攻击,该客户端试图利用那些使用定长缓冲来读取或控制请求 URI 的服务器上的安全漏洞。
有什么好的解决方法吗?声明:我用来请求其它的网站是没有问题的.
还有一点,我排除第一个可能.

解决方案 »

  1.   

    你可以先用一个超级连接的控件测一下你连接的url地址,看看是不是真的有问题。
      

  2.   

    devilok()超级连接的控件?????
    =======================用IE登陆没有问题呀.
      

  3.   

    没有遇到过,有可能是Url太长了吧?会不会是网站有什么限制?
      

  4.   

    对啦,,对方是要SSL协议的..但我也添加了证书了..
      

  5.   

    好的,,先谢谢孟佬大先~~
    private string view_site(string urlStr) //下载查看HTML
            {
                string certUri = Environment.CurrentDirectory.ToString() + "\\certfile\\certFile.cert";   
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(urlStr);
                X509Certificate store = X509Certificate.CreateFromCertFile(certUri);
                myHttpWebRequest.ClientCertificates.Add(store);
                ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); 
                myHttpWebRequest.CookieContainer = stac.PicContainer;
                CookieContainer CkiContainer = new CookieContainer();
                myHttpWebRequest.CookieContainer = CkiContainer;            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                myHttpWebResponse.Cookies = stac.PicContainer.GetCookies(myHttpWebRequest.RequestUri);
                Stream myResponseStream = myHttpWebResponse.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
                string htmlText = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                return htmlText;        }        public bool CheckValidationResult(object sender, X509Certificate store, X509Chain chain, SslPolicyErrors errors)
            { 
                return true;
            }
      

  6.   

    myHttpWebRequest.MaximumAutomaticRedirections=1;
    myHttpWebRequest.AllowAutoRedirect=true;
    试试
      

  7.   

    AllowAutoRedirect默认就是true .
    你的urlStr是什么?
      

  8.   

    我这里的命名空间..using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml;
    using System.Net;
    using System.IO;
    using System.Security.Cryptography.X509Certificates;
    using Microsoft.Web.Services3.Security;
    using Microsoft.Web.Services3.Security.Tokens;
    using Microsoft.Web.Services3.Security.X509;
    using System.Security.Authentication;
    using System.Net.Security;
    //函数..urlStr 是https://esales.16288.com/ 
    private string view_site(string urlStr) //下载查看HTML
            {
                string certUri = Environment.CurrentDirectory.ToString() + "\\certfile\\certFile.cert";   
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(urlStr);
                X509Certificate store = X509Certificate.CreateFromCertFile(certUri);
                myHttpWebRequest.ClientCertificates.Add(store);
                ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); 
                myHttpWebRequest.CookieContainer = stac.PicContainer;
                CookieContainer CkiContainer = new CookieContainer();
                myHttpWebRequest.CookieContainer = CkiContainer;            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                myHttpWebResponse.Cookies = stac.PicContainer.GetCookies(myHttpWebRequest.RequestUri);
                Stream myResponseStream = myHttpWebResponse.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
                string htmlText = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                return htmlText;        }        public bool CheckValidationResult(object sender, X509Certificate store, X509Chain chain, SslPolicyErrors errors)
            { 
                return true;
            }
      

  9.   

    同时搜网(www.tongshisou.com)是一个很有创意的搜索网站,是目前最易用,最方便的整合搜索网站,本身不做搜索却把业界的搜索引擎聚合在自己网站中,包括百度,GOOGLE,YAHOO,中搜,爱问,搜狗,奇虎,腾讯搜搜,OPENV,TVIX,有网页 新闻 图片 音乐 视频 地图 工作 餐饮 的搜索,可谓很全哦,搜索起来确实方便,而且很易用,可以把结果同时在一个网页中以分割条形式分开,而且可以分割成2-4个窗口,大家可以一试哦www.tongshisou.com
      

  10.   

    被大水淹没啦~~我顶我再顶我奋不顾身的顶.HELP ME~
      

  11.   

    参考
    http://support.microsoft.com/kb/895971/zh-cn
    试试
      

  12.   

    谢谢,孟老大..得到HTML源代码啦...谢谢,谢谢...现在就结贴~~~