Web请求内容类型始终为text / html

时间:2016-03-04 18:50:00

标签: c# json asp.net-mvc httpwebrequest webrequest

我有一个我需要使用的网络API。 该api将根据发送的内容类型I返回数据。 通常它会返回html响应。 如果请求的内容类型标题包含' application / json'标题它将返回一个json响应。

当我使用Postman尝试并添加内容类型标题(作为application / json)时,一切都很好。 但是当使用C#WebRequest对象进行尝试时,我总是得到html响应,无论我使用的内容类型标题如何。 我使用fiddler查看了网页请求,内容类型始终是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。

提前致谢, 沙乌尔

1 个答案:

答案 0 :(得分:5)

您要做的是设置Accept标题,而不是Content-TypeAccept指定您要接收的数据类型。 Content-Type用于指定您发送的数据类型。

httpWebRequest.Accept = "application/json";