2014-07-09 2 views
3

내가 발견 한 코드 (YouTube API 포함 Zend)를 사용하여 성공적으로 YouTube에 비디오를 업로드했습니다. 프록시 서버를 통해 업로드 할 수 있도록 수정했지만 벽돌 벽에 부딪혔습니다. 나는 프록시 지원을 구현하기 위해 어떤 라인을 추가했는지 논평했다. 내가 명령 줄에서 PHP를 실행하면 메시지가 다시 제공젠드 (Zend)를 사용하여 프록시를 통해 업로드

<?php 
     require_once 'Zend/Loader.php'; 
     Zend_Loader::loadClass('Zend_Gdata'); 
     Zend_Loader::loadClass('Zend_Gdata_YouTube'); 
     Zend_Loader::loadClass('Zend_Gdata_AuthSub'); 
     Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
     Zend_Loader::loadClass('Zend_Http_Client_Exception'); //added for proxy support 
     Zend_Loader::loadClass('Zend_Http_Client'); //added for proxy support 
     Zend_Loader::loadClass('Zend_Http_Client_Adapter_Proxy'); //added for proxy support 
     Zend_Loader::loadClass('Zend_Gdata_App_HttpException'); //added for proxy support 

    $config = array( 
     'adapter' => 'Zend_Http_Client_Adapter_Proxy', 
     'proxy_host' => 'MY_PROXY_IP', 
     'proxy_port' => 8080, 
     'proxy_user' => 'USER', 
     'proxy_pass' => 'PASS' 
    ); //added for proxy support 

    $proxiedHttpClient = new Zend_Gdata_HttpClient('http://www.google.com/', $config); //added for proxy support 
      try 
      { 
       $authenticationURL= 'https://www.google.com/accounts/ClientLogin'; 
       $httpClient = Zend_Gdata_ClientLogin::getHttpClient( 
       $username = 'YOUTUBE EMAIL ID', 
       $password = 'YOUTUBE PASSWORD',   
       $service = 'youtube', 
       $client = $proxiedHttpClient, //changed from "$client = null" 
       $source = 'mysource',   
       $loginToken = null, 
       $loginCaptcha = null, 
       $authenticationURL); 
      } 
      catch (Zend_Gdata_App_Exception $e) 
      { 
       $arry['data']['flag'] = false; 
       $arry['data']['msg'] = 'Username or Password Invalid.'; 
       print_r(json_encode($arry)); 
       die(); 
      } 
       $httpClient->setConfig($config); //added for proxy support 
       $developerKey='DEVELOPER KEY'; 
       $applicationId = 'not require'; 
       $clientId = 'not require'; 
       $yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 
       $fileName = "FILENAME";  
       $fileType = "video/mp4"; 
       $newEntry = new Zend_Gdata_YouTube_VideoEntry(); 
       $filesource = $yt->newMediaFileSource($fileName); 
       $filesource->setContentType('video/mp4'); 
       $filesource->setSlug($fileName); 
       $newEntry->setMediaSource($filesource); 
       $newEntry->setVideoTitle("VIDEO TITLE"); 
       $newEntry->setVideoDescription("VIDEO DESCRIPTION HERE"); 
       $newEntry->setVideoCategory("VIDEO CATEGORY HERE"); 
       $newEntry->setVideoTags("VIDEO TAGS"); 
       try { 
        $newEntry = $yt->insertEntry($newEntry, 'http://uploads.gdata.youtube.com/feeds/api/users/default/uploads', 'Zend_Gdata_YouTube_VideoEntry'); 
        $state = $newEntry->getVideoState(); 
        if ($state) 
        { 
         $videourl = $newEntry->getVideoWatchPageUrl(); 
          $arry['data']['flag'] = true; 
          $arry['data']['url'] = $videourl; 
          $arry['data']['msg'] = "Video Uploaded Successfully."; 
        } 
        else 
        { 
         $arry['data']['flag'] = false; 
         $arry['data']['msg'] = "Not able to retrieve the video status information yet. " ."Please try again later.\n"; 
        } 
       } 
       catch (Zend_Gdata_App_Exception $e) { 
         $arry['data']['flag'] = false; 
         $arry['data']['msg'] = $e->getMessage(); 
       } 
     echo "<pre>";  
     print_r($arry); 
     ?> 

입니다 : 여기에 코드입니다

작성하려고하지만 우리는 잘못된 프록시 서버에 연결되어있는이

내가 테스트 한 프록시는 확실히 작동합니다. 사실, 깨진 프록시를 사용하면 "사용자 이름 또는 비밀번호가 유효하지 않습니다."라는 메시지가 나타납니다. 작업 프록시를 사용할 때 위의 오류 메시지 만 표시됩니다.

모든 안내 또는 해결책을 크게 높이십시오.

답변

0

나는 똑같은 문제가있어서 나를 위해 일한 해결책을 찾았습니다. 프록시 어댑터 대신 내장 된 cURL 어댑터를 사용했습니다.

아래에있는 내 예를 참조

...

$config = array( 
    'adapter' => 'Zend_Http_Client_Adapter_Curl', 
    'curloptions' => array(CURLOPT_FOLLOWLOCATION => true, CURLOPT_PROXY => "proxy:port", CURLOPT_PROXYUSERPWD => "username:password") 
); 
관련 문제