Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GetResponseStream()中的垃圾文本_C#_Login_Httpwebrequest_Fiddler - Fatal编程技术网

C# GetResponseStream()中的垃圾文本

C# GetResponseStream()中的垃圾文本,c#,login,httpwebrequest,fiddler,C#,Login,Httpwebrequest,Fiddler,我一直收到这样的垃圾短信 �\b\0\0\0\0\0\0�\a`I�%&/m�{J�J��t�\b�`$ؐ@������iG# 在我的html变量中,在该函数的末尾。正如您所看到的,通过注释掉的代码,我尝试了两种插入cookie的方法 我对HTTPwebRequest/Response这样的方法非常陌生。但从我在网上所能找到的一切来看,我正在正确地设置我的方法。如果可能的话,我想得到一些帮助 另外,当使用Fiddler解码我的请求时,并不是所有的cookie都被发送。当我的代码运行时,

我一直收到这样的垃圾短信

�\b\0\0\0\0\0\0�\a`I�%&/m�{J�J��t�\b�`$ؐ@������iG#
在我的
html
变量中,在该函数的末尾。正如您所看到的,通过注释掉的代码,我尝试了两种插入cookie的方法

我对HTTPwebRequest/Response这样的方法非常陌生。但从我在网上所能找到的一切来看,我正在正确地设置我的方法。如果可能的话,我想得到一些帮助

另外,当使用Fiddler解码我的请求时,并不是所有的cookie都被发送。当我的代码运行时,我只发送1个utma、1个utmb、1个utmc和1个utmz。但是,当我正常登录站点时,我会收到2个utma、1个utmb、2个utmc和2个utmz

我觉得这是我连接问题的根源,但我不确定

static void FillCookieJar()
{
    Console.WriteLine("Filling cookie jar...\r\n");
    try
    {
        string parameters = "SUPER LONG POST DATA found from TEXTVIEW in Fidler";
        Uri target = new Uri("https://foo.bar.com/UserSignIn");

        byte[] buffer = Encoding.ASCII.GetBytes(parameters);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(target);

        //Cookie chipOne = new Cookie("__utma", "XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XX") { Domain = target.Host };
        //Cookie chipTwo = new Cookie("__utma", "XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.X") { Domain = target.Host };
        //Cookie chipThree = new Cookie("__utmb", "XXXXXXXXX.X.XX.XXXXXXXXX") { Domain = target.Host };
        //Cookie chipFour = new Cookie("__utmc", "XXXXXXXXX") { Domain = target.Host };
        //Cookie chipFive = new Cookie("__utmc", "XXXXXXXXX") { Domain = target.Host };
        //Cookie chipSix = new Cookie("__utmz", "XXXXXXXXX.XXXXXXXXX.X.X.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)") { Domain = target.Host };
        //Cookie chipSeven = new Cookie("__utmz", "XXXXXXXXX.XXXXXXXXX.XX.X.utmcsr=titlesource.com|utmccn=(referral)|utmcmd=referral|utmcct=/") { Domain = target.Host };

        //cookieJar.Add(chipOne);
        //cookieJar.Add(chipTwo);
        //cookieJar.Add(chipThree);
        //cookieJar.Add(chipFour);
        //cookieJar.Add(chipFive);
        //cookieJar.Add(chipSix);
        //cookieJar.Add(chipSeven);

        request.Headers.Add("__utma", "XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XX");
        request.Headers.Add("__utma", "XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.XXXXXXXXX.X");
        request.Headers.Add("__utmb", "XXXXXXXXX.X.XX.XXXXXXXXX");
        request.Headers.Add("__utmc", "XXXXXXXXX");
        request.Headers.Add("__utmc", "XXXXXXXXX");
        request.Headers.Add("__utmz", "XXXXXXXXX.XXXXXXXXX.X.X.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)");
        request.Headers.Add("__utmz", "XXXXXXXXX.XXXXXXXXX.XX.X.utmcsr=titlesource.com|utmccn=(referral)|utmcmd=referral|utmcct=/");

        request.CookieContainer = cookieJar;
        request.Method = WebRequestMethods.Http.Post;
        request.KeepAlive = true;
        request.Accept = "*/*";
        request.Headers.Add("Cache-Control", "no-cache");
        request.Headers.Add("Accept-Encoding: gzip,deflate,sdch");
        request.Headers.Add("Accept-Language: en-US,en;q=0.8");
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
        request.Headers.Add("X-Requested-With: XMLHttpRequest");
        request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
        request.Referer = "https://foo.bar.com/UserSignIn";
        request.Headers.Add("Origin", "https://foo.bar.com");
        request.Headers.Add("X-MicrosoftAjax", "Delta=true");
        request.ContentLength = buffer.Length;

        Stream PostData = request.GetRequestStream();
        PostData.Write(buffer, 0, buffer.Length);
        PostData.Close();

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Stream Answer = response.GetResponseStream();
        StreamReader _Answer = new StreamReader(Answer);
        String html = _Answer.ReadToEnd();
        response.Close();

    }
    catch (Exception ex)
    {
        Console.WriteLine("Error FillingCookieJar");
    }
}

您需要解压缩gzip流以获取纯文本,这可能是在
UTF-8
中,而不是在ASCII中(在响应的
内容类型
标题上查找
字符集
属性)

您可以使用该属性自动解压缩内容

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(target);
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 
您看到的url是
urlcoded
。您可以使用使URL看起来像
https://foo.bar.com/Vendor

string decoded = HttpUtility.UrlDecode(html);

@你将如何调试它?OP已使用Fiddler。您确定编码是
ASCII
而不是
UTF-8
?另外,您确定数据没有被压缩吗?对于后者,可以使用
request.AutomaticDecompression=DecompressionMethods.Deflate | DecompressionMethods.GZip在您的
HttpWebRequest
实例化之后,让类自动为gzip放气。您发现了这两个问题!非常感谢。但是,现在我的
html
变量返回=
1 | | | | | | 4 | 45 |页面重定向| | https%3a%2f%2foo.bar.com%2fVendor |
我能用
1 | | | | | | 4 | 45 |页面重定向做什么||https://foo.bar.com/Vendor|
?我应该在下一个HttpWebRequest方法中将其用作目标URI吗?这取决于您。您从站点返回的数据将根据站点的不同而变化,但上面的信息显示了如何解码流。