2010-12-27 7 views
0

Ich dachte, wie kann ich eine Funktion in PHP zu schreiben, die einen einzelnen String-Argument nehmen, wie folgt:HTTP Sehr Low-Level-Anfragen von PHP

function executeHTTP($cmd) 
{ 
    //some way to execute $cmd 
} 

Jetzt cmd $ ist, was es enthält ...

$cmd = " 
POST /action/GetUploadToken HTTP/1.1 
Host: gdata.youtube.com 
Authorization: AuthSub token="DXAA...sdb8" 
GData-Version: 2 
X-GData-Key: key=adf15ee97731bca89da876c...a8dc 
Content-Length: 1941255 
Content-Type: application/atom+xml; charset=UTF-8 

<?xml version="1.0"?> 
<entry xmlns="http://www.w3.org/2005/Atom" 
    xmlns:media="http://search.yahoo.com/mrss/" 
    xmlns:yt="http://gdata.youtube.com/schemas/2007"> 
    <media:group> 
    <media:title type="plain">Bad Wedding Toast</media:title> 
    <media:description type="plain"> 
     I gave a bad toast at my friend's wedding. 
    </media:description> 
    <media:category 
     scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People 
    </media:category> 
    <media:keywords>toast, wedding</media:keywords> 
    </media:group> 
</entry> 
" 

Eine Idee, wie kann ich das tun?

Antwort

1

Mit fsockopen, wie zoldar sagte, können Sie eine HTTP-Anforderung machen.

function executeHTTP($cmd,$host="gdata.youtube.com",$port=80) 
{ 
    $fp = fsockopen($host, $port, $errno, $errstr, 30); 
    if (!$fp) { 
     echo "$errstr ($errno)<br />\n"; 
     return false; 
    } else { 
     fwrite($fp, $cmd); 
     $data = fread($fp); 
     fclose($fp); 
    } 
    return $data; 
} 

Sie müssen auch den Host und den Port angeben, aber Sie können Standardeinstellungen festlegen.