HttpWebRequest.getResponse () возвращает NULL - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь создать консольное приложение, которое отправляет веб-запрос на веб-сайт, чтобы я мог получить от него некоторую информацию в формате 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, но я получаю значение NULL из getResponse ().

1 Ответ

0 голосов
/ 02 января 2019

Попробуйте сериализовать учетные данные в вашей форме и отправить заголовок в качестве параметра для этого класса.Проверьте мой код ниже.Это не на 100% соответствует вашим требованиям, но, по крайней мере, поможет вам разобраться в вашей логике.

Вот что я получаю от Json Response из этого кода.Его работа Perfect.Пожалуйста, не забудьте добавить опцию тайм-аута в ваш веб-запрос и в конце закройте программу чтения потокового видео и поток после завершения вашей задачи.пожалуйста, проверьте этот код.

  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;

    }
...