首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebRequest.getResponse()返回NULL

HttpWebRequest.getResponse()返回NULL
EN

Stack Overflow用户
提问于 2019-01-02 01:56:38
回答 1查看 2.6K关注 0票数 0

我正在尝试创建一个控制台应用程序,将一个WebRequest发送到一个网站,这样我就可以从它获得一些JSON格式的信息。一旦我构建了请求并尝试获得响应,我只想打印出数据,但是当我调用httpWebRequest.getResponse()时,它返回NULL。

我尝试过多种其他方法将数据发送到url,但这些方法都给了我类似404或400个错误等等。这个方法至少不会给我任何错误,只是一个NULL。

下面是我为API使用的文档的快照(尽管文档尚未完成):

下面是我现在拥有的控制台应用程序代码:

代码语言:javascript
复制
    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。

EN

回答 1

Stack Overflow用户

发布于 2019-01-02 02:51:17

尝试在窗体中序列化凭据,并将标头发送作为此类的参数。检查下面的代码。它不是100 %符合你的要求,但至少它将有助于通过你的逻辑。

下面是我从这段代码中得到的Json响应。它的工作很完美。请记住在您的end请求中添加超时选项,并在完成任务后关闭流读取器和流。请检查这段代码。

代码语言:javascript
复制
  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;

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54000405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档