在c#

时间:2016-05-27 01:36:00

标签: c# unicode get response

我正在c#中执行get请求,但我得到的回复无效,而不是原始内容

using System;
using System.Net;
using System.Text;
using System.IO;


public class Test
{
    // Specify the URL to receive the request.
    public static void Main(string[] args)
    {
        HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www1.bloomingdales.com/api/store/v2/stores/367,363,6113,364,4946?upcNumber=849262004629");

        // Set some reasonable limits on resources used by this request
        myHttpWebRequest.MaximumAutomaticRedirections = 4;
        myHttpWebRequest.MaximumResponseHeadersLength = 4;
        // Set credentials to use for this request.
        myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;
        myHttpWebRequest.Method = "GET";
        myHttpWebRequest.AllowAutoRedirect = false;
        myHttpWebRequest.ContentLength = 0;
        myHttpWebRequest.Accept = "application/json, text/javascript, */*; q=0.01";
        myHttpWebRequest.Headers.Add("Cookie", "ShippingCountry=US;");
        myHttpWebRequest.UserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36";
        myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
        myHttpWebRequest.Headers.Add("Accept-Language", "en-US,en;q=0.8");
        myHttpWebRequest.Headers.Add("X-Macys-ClientId", "NavApp");
        var response = (HttpWebResponse)myHttpWebRequest.GetResponse();
        var rmyResponseHeaders = response.Headers;

        Console.WriteLine("Content length is {0}", response.ContentLength);
        Console.WriteLine("Content type is {0}", response.ContentType);

        // Get the stream associated with the response.
        Stream receiveStream = response.GetResponseStream();

        // Pipes the stream to a higher level stream reader with the required encoding format. 
        StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

        Console.WriteLine("Response stream received.");
        Console.WriteLine(readStream.ReadToEnd());
        Console.ReadLine();
        response.Close();
        readStream.Close();
    }
}

上面得到的无效字符就像????????和其他一些人物

您可以在此处查看原始回复

curl 'http://www1.bloomingdales.com/api/store/v2/stores/367,363,6113,364,4946?upcNumber=849262004629' -H 'Cookie:shippingCountry=US;' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36' -H 'Accept-Language: en-US,en;q=0.8' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'X-Macys-ClientId: NavApp' --compressed

如何解决此问题并获得准确的回复(原始响应)?

1 个答案:

答案 0 :(得分:1)

您没有解压缩响应流。将Accept-Encoding标头设置为空字符串,直到您准备好计算出使用了哪种压缩并解压缩它。