我把完整代码贴出来吧
 public string getPageFromURL(string url, string key)
        {
            string timestamp = GetTimestamp().ToString();
            string value= "simple auth_key=\"" + RawUrlEncode(API_KEY) + "\",auth_timestamp=\"" + RawUrlEncode(timestamp) + "\",auth_signature=\"" + RawUrlEncode(GetUnreadSignature(timestamp)) + "\"";
           
            string content = "";
            // Create a new HttpWebRequest object.Make sure that 
            // a default proxy is set if you are behind a fure wall.
            //其中,HttpWebRequest实例不使用HttpWebRequest的构造函数来创建,二是使用WebRequest的Create方法来创建.            HttpWebRequest myHttpWebRequest1 = (HttpWebRequest)WebRequest.Create(url);            //不维持与服务器的请求状态
            myHttpWebRequest1.KeepAlive = false;
            myHttpWebRequest1.Headers.Add(key, value);            //创建一个HttpWebRequest对象
            //Assign the response object of HttpWebRequest to a HttpWebResponse variable.\
            HttpWebResponse myHttpWebResponse1;
            try
            {
                //根据微软MSDN上所说:"决不要直接创建HttpWebResponse的实例,要使用HttpWebRequest的GetResponse()方法返回的实例."具体的原因我也不清楚,可能HttpWebResponse类的构造函数中没有实现HttpWebResponse实例的代码吧.
                myHttpWebResponse1 = (HttpWebResponse)myHttpWebRequest1.GetResponse();
                //设置页面的编码模式
                System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
                Stream streamResponse = myHttpWebResponse1.GetResponseStream();
                StreamReader streamRead = new StreamReader(streamResponse, utf8);                Char[] readBuff = new Char[256];
                //这里使用了StreamReader的Read()方法,参数意指从0开始读取256个char到readByff中.
                //Read()方法返回值为指定的字符串数组,当达到文件或流的末尾使,方法返回0
                int count = streamRead.Read(readBuff, 0, 256);
                while (count > 0)
                {
                    String outputData = new String(readBuff, 0, count);
                    content += outputData;
                    count = streamRead.Read(readBuff, 0, 256);
                }
                myHttpWebResponse1.Close();
                return (content);
            }
            catch (WebException ex)
            {
                content = "在请求URL为:" + url + "的页面时产生错误,错误信息为" + ex.ToString();
                return (content);
            }
        }调用这个方法的时候经常会在myHttpWebResponse1 = (HttpWebResponse)myHttpWebRequest1.GetResponse();这句代码的时候出现异常,出现的很频繁。请问各位怎么解决?

解决方案 »

  1.   

    楼主  你的url值是多少
      

  2.   

    myHttpWebRequest1.KeepAlive = false;
    换成true试试
      

  3.   

    lz调用第三方api接口?
    我自己调用新浪的public ApiAccessToken GetAccessToken(string code, string requestToken, string requestTokenSecrect, string verify)
            {
                Dictionary<string, string> prame = new Dictionary<string, string>();
                prame.Add("client_id", _apiKey);
                prame.Add("client_secret", _apiKeySecret);
                prame.Add("grant_type", "authorization_code");
                prame.Add("code", code);
                prame.Add("redirect_uri", "XXXXXXXXXX");
                string resultString = HttpRequestCommand.RequestResult(_accessToken, HttpRequestCommand.GetRequestString(prame), "POST");
                //ErrorLog.Info("sinaJson:" + resultString);
                HttpRequestCommand.JsonString = resultString;
                ApiAccessToken result = new ApiAccessToken();
                JObject JsonType = JObject.Parse(resultString);
                if (!string.IsNullOrEmpty(((string)JsonType["access_token"])))
                {
                    result = InstantiatedApiAccessToken(JsonType);
                }            return result;
            }public static string RequestResult(string requestUrl, string requestPrame = "", string action = "GET" , string service ="DEFAULT")
            {            string responseBody = "";
                HttpWebRequest request;
                if (action.Equals("POST"))
                {
                    ASCIIEncoding code = new ASCIIEncoding();
                    byte[] data = code.GetBytes(requestPrame);
                    request = (HttpWebRequest)WebRequest.Create(new Uri(requestUrl));
                    request.Method = action;
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.ContentLength = data.Length;
                    using (Stream requestStream = request.GetRequestStream())
                    {
                        requestStream.Write(data, 0, data.Length);
                        requestStream.Close();
                    }
                }
                else
                {
                    
                    requestUrl += (service == "DEFAULT")? "?" + requestPrame : requestPrame;
                    request = (HttpWebRequest)WebRequest.Create(new Uri(requestUrl));
                }
                try
                {
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                    responseBody = stream.ReadToEnd();
                    stream.Close();
                    response.Close();
                }
                catch (WebException  ex)
                {
                    string error = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
                }            return responseBody;
            }