如何使用HttpWebRequest获取数据

问题描述 投票:0回答:1

我正在使用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);

不确定我在哪里做错了。

c# json
1个回答
1
投票

不为HTTP Get提供ContentTypeContentLength,服务器在响应中执行此操作。

在第一个using语句中,您正在调用另一个request对象。

尝试一下(不包括异常处理):

        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())) //stream not readable error
        {
            getdata = reader.ReadToEnd();
        }

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

但是,如果端点需要,您可以添加一个接受标头:

webRequest.Accept = "application/json";
© www.soinside.com 2019 - 2024. All rights reserved.