我正在使用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);
不确定我在哪里做错了。
不为HTTP Get提供ContentType
或ContentLength
,服务器在响应中执行此操作。
在第一个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";