繁体   English   中英

如何使用 HttpWebRequest 获取数据

[英]how to GET data using HttpWebRequest

我正在使用 HttpWebRequest 获取数据并使用以下代码遇到 stream 不可读错误。

        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);

不知道我在哪里做错了。

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

在您的第一个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);

如果端点需要,您可以添加接受 header :

webRequest.Accept = "application/json";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM