Как получить данные, используя HttpWebRequest - PullRequest
0 голосов
/ 03 апреля 2020

Я работаю, получая данные с помощью HttpWebRequest и сталкиваюсь с потоком, который не читается, с помощью приведенного ниже кода.

        JavaScriptSerializer jss = new JavaScriptSerializer();
        string getUrl = "http://url.com";
        var getdata = "";

        HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(getUrl);
        webrequest.Method = "GET";
        webrequest.ContentType = "application/json";
        webrequest.ContentLength = data.Length;

        using (HttpWebResponse webresponse = (HttpWebResponse)request.GetResponse())
        using (Stream stream = webresponse.GetResponseStream())
        using (StreamReader reader = new StreamReader(stream)) //stream not readable error
        {
            getdata = reader.ReadToEnd();
        }

        dynamic getjsondata = jss.Deserialize<dynamic>(getdata);

Не уверен, где я делаю это неправильно.

1 Ответ

2 голосов
/ 03 апреля 2020

Не указывайте ContentType или ContentLength для получения HTTP, сервер делает это в ответе.

В первом операторе using вы вызываете другой request object.

Попробуйте это (без обработки исключений):

        JavaScriptSerializer jss = new JavaScriptSerializer();
        string getUrl = "http://url.com";
        var getdata = "";

        HttpWebRequest webRequest = WebRequest.CreateHttp(getUrl);
        //webrequest.Method = "GET"; // GET is the default.

        using (var webResponse = webRequest.GetResponse())
        using (var reader = new StreamReader(webResponse.GetResponseStream()))
        {
            getdata = reader.ReadToEnd();
        }

        dynamic getjsondata = jss.Deserialize<dynamic>(getdata);

Вы можете добавить заголовок accept, если это необходимо конечной точке:

webRequest.Accept = "application/json";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...