Web 请求内容类型始终为 text/html
Web request Content type is always text/html
我有一个网络 api 我需要使用。
api 将根据我发送的内容类型 return 数据。
通常它会 return html 响应。
如果请求有 Content-Type header 和 'application/json' header 它将 return 一个 json 响应。
当我尝试使用 Postman 并添加 content-type header(如 application/json)时,一切都很好。
但是当使用 C# WebRequest object 尝试它时,无论我使用的是 content-type header,我总是得到 html 响应。
我用fiddler看web请求,content type一直是text/html.
这是我的代码。
试过这个:
var webAddr = "https://xxxxxxxx.com/api/blabla";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.Method = "GET";
httpWebRequest.Headers.Add("Authorization", "Basic xxxxxxxxxxx==");
httpWebRequest.ContentType = "application/json; charset=utf-8";
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
Stream resStream = response.GetResponseStream();
using (var reader = new StreamReader(resStream))
{
result = reader.ReadToEnd();
}
txtResult.Text = result;
也试过这个:
var request = (HttpWebRequest)WebRequest.Create(EndPoint + parameters);
request.Method = Method.ToString();
request.ContentLength = 0;
request.ContentType = "application/json";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(userName + ":" + password));
request.Headers.Add("Authorization", "Basic " + encoded);
using (var response = (HttpWebResponse)request.GetResponse())
{
var responseValue = string.Empty;
if (response.StatusCode != HttpStatusCode.OK)
{
var message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
return null;
}
// grab the response
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}
仍然,每次内容类型都是 text/html。
提前致谢,
沙尔
您要做的是设置 Accept
headers,而不是 Content-Type
。 Accept
指定您要接收的数据类型。 Content-Type
用于指定您发送的数据类型。
httpWebRequest.Accept = "application/json";
我有一个网络 api 我需要使用。 api 将根据我发送的内容类型 return 数据。 通常它会 return html 响应。 如果请求有 Content-Type header 和 'application/json' header 它将 return 一个 json 响应。
当我尝试使用 Postman 并添加 content-type header(如 application/json)时,一切都很好。 但是当使用 C# WebRequest object 尝试它时,无论我使用的是 content-type header,我总是得到 html 响应。 我用fiddler看web请求,content type一直是text/html.
这是我的代码。 试过这个:
var webAddr = "https://xxxxxxxx.com/api/blabla";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.Method = "GET";
httpWebRequest.Headers.Add("Authorization", "Basic xxxxxxxxxxx==");
httpWebRequest.ContentType = "application/json; charset=utf-8";
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
Stream resStream = response.GetResponseStream();
using (var reader = new StreamReader(resStream))
{
result = reader.ReadToEnd();
}
txtResult.Text = result;
也试过这个:
var request = (HttpWebRequest)WebRequest.Create(EndPoint + parameters);
request.Method = Method.ToString();
request.ContentLength = 0;
request.ContentType = "application/json";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(userName + ":" + password));
request.Headers.Add("Authorization", "Basic " + encoded);
using (var response = (HttpWebResponse)request.GetResponse())
{
var responseValue = string.Empty;
if (response.StatusCode != HttpStatusCode.OK)
{
var message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
return null;
}
// grab the response
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}
仍然,每次内容类型都是 text/html。
提前致谢, 沙尔
您要做的是设置 Accept
headers,而不是 Content-Type
。 Accept
指定您要接收的数据类型。 Content-Type
用于指定您发送的数据类型。
httpWebRequest.Accept = "application/json";