Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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# 用C从Youtube读取ajax响应#_C#_Xml_Ajax_Youtube_Httpwebrequest - Fatal编程技术网

C# 用C从Youtube读取ajax响应#

C# 用C从Youtube读取ajax响应#,c#,xml,ajax,youtube,httpwebrequest,C#,Xml,Ajax,Youtube,Httpwebrequest,我正试图在Youtube上发布一条评论并获得xml响应(这样我就可以获得评论ID,或者如果我需要输入captcha之类的东西),但我只能发布评论。由于某些原因,我无法使用response.GetResponseStream()读取xml响应。当我试图将响应输出到控制台时,什么也得不到。我用Wireshark嗅探了我的程序发送和接收的请求和响应,我可以看到xml在响应中 下面是我用来读取响应的代码: using (HttpWebResponse response = MakeRequest(req

我正试图在Youtube上发布一条评论并获得xml响应(这样我就可以获得评论ID,或者如果我需要输入captcha之类的东西),但我只能发布评论。由于某些原因,我无法使用
response.GetResponseStream()
读取xml响应。当我试图将响应输出到控制台时,什么也得不到。我用Wireshark嗅探了我的程序发送和接收的请求和响应,我可以看到xml在响应中

下面是我用来读取响应的代码:

using (HttpWebResponse response = MakeRequest(request, cookies, post))
{
    using (var reader = new System.IO.StreamReader(response.GetResponseStream(), UTF8Encoding.UTF8))
    {
        string xml = reader.ReadToEnd();
        Console.WriteLine(xml);
    }
}
以及MakeRequest函数

private static HttpWebResponse MakeRequest(HttpWebRequest request, CookieContainer SessionCookieContainer, Dictionary<string, string> parameters = null)
{
    request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5Accept: */*";
    request.Accept = "text/html,text/xml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    request.CookieContainer = SessionCookieContainer;
    request.AllowAutoRedirect = false;
    request.KeepAlive = true;

    if (proxy != "") request.Proxy = myproxy;

    if (parameters != null) request.Method = "POST";

    request.ContentType = "application/x-www-form-urlencoded";
    string postData = string.Empty;

    if (parameters != null)
    {
        postData = getPostData(parameters);


        byte[] postBuffer = UTF8Encoding.UTF8.GetBytes(postData);
        using (Stream postStream = request.GetRequestStream())
        {
            postStream.Write(postBuffer, 0, postBuffer.Length);
        }
    }

    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    SessionCookieContainer.Add(response.Cookies);

    while (response.StatusCode == HttpStatusCode.Found)
    {
        response.Close();
        request = GetNewRequest(response.Headers["Location"], SessionCookieContainer);
        response = (HttpWebResponse)request.GetResponse();
        SessionCookieContainer.Add(response.Cookies);
    }

    return response;
}
私有静态HttpWebResponse MakeRequest(HttpWebRequest请求,CookieContainer会话CookieContainer,字典参数=null)
{
request.UserAgent=“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/536.5(KHTML,类似Gecko)Chrome/19.0.1084.52 Safari/536.5Accept://*”;
request.Accept=“text/html,text/xml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”;
request.CookieContainer=SessionCookieContainer;
request.AllowAutoRedirect=false;
request.KeepAlive=true;
if(proxy!=“”)请求。proxy=myproxy;
if(parameters!=null)request.Method=“POST”;
request.ContentType=“application/x-www-form-urlencoded”;
string postData=string.Empty;
if(参数!=null)
{
postData=getPostData(参数);
byte[]postBuffer=UTF8Encoding.UTF8.GetBytes(postData);
使用(Stream postStream=request.GetRequestStream())
{
写(postBuffer,0,postBuffer.Length);
}
}
HttpWebResponse=request.GetResponse()作为HttpWebResponse;
sessionokiecontainer.Add(response.Cookies);
while(response.StatusCode==HttpStatusCode.Found)
{
response.Close();
request=GetNewRequest(response.Headers[“Location”],sessionokiecontainer);
response=(HttpWebResponse)request.GetResponse();
sessionokiecontainer.Add(response.Cookies);
}
返回响应;
}

关于为什么不起作用以及如何解决这个问题,你有什么想法吗?

我认为切换到HttpClient可以解决这个问题。

请定义“不起作用”。你说不识字是什么意思?发生了什么?我得到了一个空白的回答。控制台上没有打印任何内容。所以您说“我已经嗅探了我的程序使用Wireshark发送和接收的请求和响应,我可以看到响应中包含xml。”这意味着您的请求确实返回了结果,但没有返回代码?