簡體   English   中英

HttpWebRequest.getResponse() 返回 NULL

[英]HttpWebRequest.getResponse() returning NULL

我正在嘗試創建一個將 WebRequest 發送到網站的控制台應用程序,以便我可以以 JSON 格式從中獲取一些信息。 一旦我建立了請求並嘗試獲得響應,我只想簡單地打印出數據,但是當我調用 httpWebRequest.getResponse() 時它返回 NULL。

我已經嘗試了多種將數據發送到 url 的其他方法,但這些方法都給了我 404 或 400 錯誤等。這種方法至少沒有給我任何錯誤,只是一個 NULL。

這是我用於 API 的文檔的快照(盡管文檔尚未完成):

這是我現在擁有的控制台應用程序代碼:

    try
        {
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.remot3.it/apv/v27/user/login");
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "POST";
            httpWebRequest.Headers.Add("developerkey", "***KEY***");
            using (var streamWriter = new

            StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = new JavaScriptSerializer().Serialize(new
                {
                    email = "***EMAIL***",
                    password = "***PASSWORD***"
                });
                Console.WriteLine(json);
                streamWriter.Write(json);
            }
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                Console.WriteLine(result);
                Console.ReadLine();
            }
        }catch(Exception e)
        {
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
            Console.ReadLine();
        }

預期輸出是一些 JSON 數據,但我從 getResponse() 得到一個 NULL。

嘗試在您的表單中序列化憑證並將標頭作為此類的參數發送。 在下面檢查我的代碼。 它不是 100% 符合您的要求,但至少它有助於了解您的邏輯。

這是我從這段代碼中得到的 Json Response。 它的工作完美。 請記住在您的網絡請求中添加超時選項,並在完成您的任務后關閉流閱讀器和流。 請檢查此代碼。

  public static string httpPost(string url, string json)
    {
        string content = "";          
        byte[] bs;

        if (json != null && json != string.Empty)
        {
            bs = Encoding.UTF8.GetBytes(json);
        }
        else
        {
            bs = Encoding.UTF8.GetBytes(url);
        }
        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
        req.Method = "POST";

        if (json != string.Empty)
            req.ContentType = "application/json";
        else
            req.ContentType = "application/x-www-form-urlencoded";
        req.KeepAlive = false;
        req.Timeout = 30000;
        req.ReadWriteTimeout = 30000;
        //req.UserAgent = "test.net";
        req.Accept = "application/json";
        req.ContentLength = bs.Length;
        using (Stream reqStream = req.GetRequestStream())
        {
            reqStream.Write(bs, 0, bs.Length);
            reqStream.Flush();
            reqStream.Close();
        }
        using (WebResponse wr = req.GetResponse())
        {
            Stream s = wr.GetResponseStream();
            StreamReader reader = new StreamReader(s, Encoding.UTF8);
            content = reader.ReadToEnd();
            wr.Close();
            s.Close();
            reader.Close();
        }
        return content;

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM