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

問題はこれらの2行にある必要があります

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

これらの行を実行した後、リクエストが null かどうかをブレークポイントで確認します。null の場合、提供された 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 に答える