您可以从流读取的数据HttpWebResponse
对象中:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
HttpStatusCode statusCode = ((HttpWebResponse)response).StatusCode;
string contents = reader.ReadToEnd();
}
这样,你就必须手动检测的编码,或者使用库来检测编码。您也可以从HttpWebResponse
对象中读取编码作为字符串,当存在时,它位于ContentType
属性内。如果页面是Html,那么您将不得不解析它,以便在文档顶部或头部内部进行可能的编码更改。
读取处理来自ContentType标头编码
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
string content;
HttpStatusCode statusCode;
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
var contentType = response.ContentType;
Encoding encoding = null;
if (contentType != null)
{
var match = Regex.Match(contentType, @"(?<=charset\=).*");
if (match.Success)
encoding = Encoding.GetEncoding(match.ToString());
}
encoding = encoding ?? Encoding.UTF8;
statusCode = ((HttpWebResponse)response).StatusCode;
using (var reader = new StreamReader(stream, encoding))
content = reader.ReadToEnd();
}
呵呵?你使用GET,所以你得到GET。问题在哪里? –
'request.GetResponse()'让你们都得到了。你是那个只从中获取'StatusCode'的人。 – Tobberoth