【问题标题】:Curl php youtube卷曲 php youtube
【发布时间】:2009-09-17 22:35:20
【问题描述】:

您好,我正在尝试构建没有 Zend 函数的 php youtube api

这是我到现在为止的:

function upload() {
    $files  = $_FILES;
    $name   = $files['file']['name'];
    $type   = $files['file']['type'];
    $size   = $files['file']['size'];
    $tmp_nm = $files['file']['tmp_name'];

    $data = array('name' => 'Foo', 'file' => '@'.$tmp_nm);

    print_r($_POST);
    print_r($_FILES);

    echo 'Size '.$size;

    $headers = array( 
        "Authorization: AuthSub token=".$this->auth,
        "GData-Version: 2",
        "X-GData-Key: key=".$this->dev_key,
        "Content-length: ".$size, 
        "API_XML_request"
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/action/GetUploadToken');
    curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_REFERER,true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
    curl_setopt($ch, CURLOPT_HEADER,0);

    if($this->get_info)
    {
        $this->curlget_info($ch);
        }
    $output = curl_exec($ch);

    print_r($output);

    return $output;
}

我得到的错误:

输出 1

Array ( [token] => TOKEN ) Array ( [file] => Array ( [name] => 0016.png [type] => image/png [tmp_name] => D:\wamp\tmp\php178D.tmp [error] => 0 [size] => 4216 ) ) Size 4216
Google       
Error

Length Required

POST requests require a Content-length header.

输出 2

Array ( [token] => TOKEN ) Array ( [file] => Array ( [name] => Film.wmv [type] => video/x-ms-wmv [tmp_name] => D:\wamp\tmp\php11D3.tmp [error] => 0 [size] => 96589 ) ) Size 96589
Google       
Error

Length Required

POST requests require a Content-length header.

我正在使用this guide。

我试图解决这个问题 5 天,我询问了几个 irc 频道和论坛。有朋友在这里联系我问,希望有人能帮助我:))

【问题讨论】:

    标签: php youtube


    【解决方案1】:

    我没有开发者密钥,因此无法直接帮助您,但显然 Google 对您的 http 标头有问题,因此您必须找出您在标头中发送的内容,而不是邮件正文.最好的方法是在数据包离开您的机器时检查电线上的数据包。

    所以安装Wireshark,在你的WAMP服务器上启动它,开始捕获数据包,做你的测试,然后查看数据包中的http连接。确保它符合您的预期。

    或者也许 curl 有一种方法可以将数据包写入文件而不是服务器以进行调试。我不知道。

    这也是一个长镜头(并且会依赖于它们超出规格),但我注意到您和您链接到的其他人具有“内容长度”。尝试“Content-Length”以匹配示例。

    【讨论】:

      【解决方案2】:

      不确定这是否是答案,但在示例页面中,他们在 authsub 令牌周围加上了引号:

      授权:A​​uthSub token="DXAA...sdb8"

      可以试试吗?

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2015-09-18
      • 2016-08-12
      • 2012-03-07
      • 2018-05-02
      • 2011-05-15
      • 2011-05-21
      相关资源
      最近更新 更多