2
public static string Method_Name(
        string requestMethod, 
        string requestUrl, 
        string requestBody = null, 
        Dictionary<string, string> requestHeader = null, 
        string requestUserAgent = null, 
        Boolean isContentType = false)
    {

        string responseString = String.Empty;

        try
        {
            Uri requestUri = new Uri(requestUrl);
            WebRequest request = WebRequest.Create(requestUri);
            request.Timeout = 60000;

            if (requestHeader != null)
            {
                foreach (string key in requestHeader.Keys)
                {
                    request.Headers.Add(key, requestHeader[key]);
                }
            }

            request.Headers.Add("X-FD-TrustLevel", "trusted");
            request.Headers.Add("X-FD-Version", "1.0");

            request.Method = requestMethod;

            // For MAS 1.0 POST Call
            if (isContentType)
            {
                request.ContentType = @"application/json";
            }


            if (!String.IsNullOrEmpty(requestUserAgent))
            {
                ((HttpWebRequest)request).UserAgent = requestUserAgent;
            }

            if (!String.IsNullOrEmpty(requestBody))
            {
                Stream stream = request.GetRequestStream();
                string requestString = requestBody;
                stream.Write(Encoding.Default.GetBytes(requestString), 0, requestString.Length);
                stream.Close();
            }



/* ERROR */ HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            using (StreamReader responseStream = new StreamReader(response.GetResponseStream()))
            {
                responseString = responseStream.ReadToEnd();
            }



        }
        catch (Exception ex)
        {
            AnswersExceptionCollection.GetInstance().AddException(ex);
        }

        return responseString;
    }
}

当代码执行到达时,我收到以下消息HttpWebResponse response = (HttpWebResponse)request.GetResponse();

发生错误 - 对象引用未设置为对象的实例。

我知道为什么会发生这种错误,但在这种特殊情况下我无法找到根本原因。任何帮助都感激不尽。

4

2 回答 2

0

问题一定出在这两行

Uri requestUri = new Uri(requestUrl);
WebRequest request = WebRequest.Create(requestUri);

执行这些行后使用断点验证请求是否为空。如果它为空,那么您提供的 URL 可能不存在或可能有其他问题。

问候, Pavan.G

于 2012-12-03T08:59:21.410 回答
-1

看来你是对请求的启蒙

WebRequest request = WebRequest.Create(requestUri);

需要一些细节的那种请求。如果您尝试获取 HttpWebResponse,则必须从HttpWebRequest捕获响应。这是来自MSDN 文章的引用。

注意注意

WebRequest 类是一个抽象类。WebRequest 实例在运行时的实际行为由 WebRequest.Create 方法返回的后代类决定。有关默认值和异常的更多信息,请参阅后代类的文档,例如HttpWebRequest 和 FileWebRequest。

所以这意味着如果你创建这样的请求,你会明白这一点

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri)
于 2012-12-03T09:04:35.550 回答