Mam problem z YouTube Data API. Muszę wysłać coś takiego:
Kod
POST /feeds/api/users/default/uploads HTTP/1.1
Host: uploads.gdata.youtube.com
Authorization: AuthSub token="<authentication_token>"
GData-Version: 2
X-GData-Client: <client_id>
X-GData-Key: key=<developer_key>
Slug: <video_filename>
Content-Type: multipart/related; boundary="<boundary_string>"
Content-Length: <content_length>
Connection: close
--<boundary_string>
Content-Type: application/atom+xml; charset=UTF-8
API_XML_request
--<boundary_string>
Content-Type: <video_content_type>
Content-Transfer-Encoding: binary
<Binary File Data>
--<boundary_string>--
Host: uploads.gdata.youtube.com
Authorization: AuthSub token="<authentication_token>"
GData-Version: 2
X-GData-Client: <client_id>
X-GData-Key: key=<developer_key>
Slug: <video_filename>
Content-Type: multipart/related; boundary="<boundary_string>"
Content-Length: <content_length>
Connection: close
--<boundary_string>
Content-Type: application/atom+xml; charset=UTF-8
API_XML_request
--<boundary_string>
Content-Type: <video_content_type>
Content-Transfer-Encoding: binary
<Binary File Data>
--<boundary_string>--
szczegóły na: http://code.google.com/intl/pl/apis/youtub..._uploading.html
za pomocą fsocketopen() można to wysłać w ten sposób:
<?php $boundary = self::generateBoundaryString(); $out = "POST /feeds/api/users/default/uploads HTTP/1.1r\n"; $out .= "Host: uploads.gdata.youtube.comr\n"; $out .= "Authorization: AuthSub token=\"$this->token\"r\n"; $out .= "GData-Version: 2r\n"; $out .= "X-GData-Client: ".$this->client_id."r\n"; $out .= "X-GData-Key: key=".$this->developer_key."r\n"; $out .= "Slug: ".$this->movie->slug."r\n"; $out .= "Content-Type: multipart/related; boundary=\"".$boundary."\"r\n"; $out .= "Content-Length: <content_length>r\n"; $out .= "Connection: Closer\nr\n"; //XML with description $out .="--".$boundary."r\n"; $out .="Content-Type: application/atom+xml; charset=UTF-8r\n"; $out .= self::MakeMovieDescriptionXML(); $out .="--".$boundary."r\n"; //File data $out .="Content-Type: video/mp4r\n"; $out .="Content-Transfer-Encoding: binaryr\n"; //Read file $out .= $data; $out .="--".$boundary."r\n"; try { $dom = new DomDocument(); $dom->LoadHtml($response); $link = $dom->getElementByTagName("link"); $value = $link->item(0)->getAttribute('href'); } }else{ throw new Exception("Cannot Send data"); } }catch(Exception $e) { } ?>
Teraz pojawia się pytanie jak zastąpić wysyłanie danych z frwite() na cUrl?
Pozdrawiam,
mmx3
Zastanawiam się jeszcze nad jednym, czy czasem nie władować całości danych do nagłówka pliku