Классический пост ASP MSXML2.ServerHTTP — Youtube Api

Я пытаюсь создать приложение, в котором я могу загружать файлы на YouTube. У меня работает OAuth, и Youtube возвращает сеанс!

Проблема, с которой я сталкиваюсь, заключается в том, что YouTube требует, чтобы я сделал XMLHTTP POST, чтобы получить URL-адрес, по которому я могу загрузить через свою веб-страницу.

Я понятия не имею, как создать сообщение XMLHTTP с дополнительными параметрами, которые требуются YouTube. У них есть образцы кода на PHP и .net, которые я еще не понимаю :(

Здесь я застрял: http://code.google.com/apis/youtube/2.0/developers_guide_protocol_browser_based_uploading.html#Sending_a_Browser_Upload_API_Request

Я не знаю, как отформатировать команду xml http, чтобы иметь все эти переменные, которые хочет YouTube. Пожалуйста помоги...

вот чего хотят..

 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>

Вот код, который у меня есть сейчас: я думаю, мне нужны заголовки? Когда я отправляю это, я получаю ответ не авторизован. Я также пытался создать старый html и попробовать, но он не работает...

Не знаю, как отправляются эти параметры:

Вот что я получил

Set  xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")

URLString = "http://gdata.youtube.com/action/GetUploadToken"
SendString = ""
    SendString = SendString & "Authorization: AuthSub token=" &  token
xmlHttp.open "POST", URLString & "?" & SendString
xmlHttp.setRequestHeader "Host:", "gdata.youtube.com"
xmlHttp.setRequestHeader "Authorization: AuthSub token=", token
xmlHttp.setRequestHeader "GData-Version:", "2"
xmlHttp.setRequestHeader "Content-Length:", "<content_length>"
xmlHttp.setRequestHeader "Content-Type", "application/atom+xml; charset=UTF-"
xmlHttp.send SendString

If xmlHttp.Status >= 400 And xmlHttp.Status <= 599 Then
    Response.Write "<BR><BR><BR>Error Occured: " & xmlHttp.statusText
Else
  '  ReturnData = Replace(xmlHttp.responseText, "&", ",")
        Response.Write "<BR><BR><BR>WENT GOOD?<BR>" & xmlHttp.responseText
End If

person Frank    schedule 05.08.2010    source источник
comment
Вы используете VBScript или JScript?   -  person D'Arcy Rittich    schedule 05.08.2010
comment
Vbscript... спасибо, что заглянули сюда... Мне действительно нужно изучить .NET или, может быть, PHP. Я опоздал на 10 лет =(   -  person Frank    schedule 05.08.2010
comment
Вам нужна помощь в добавлении заголовков HTTP или создании XML? Пожалуйста, опубликуйте код, который у вас есть до сих пор.   -  person D'Arcy Rittich    schedule 05.08.2010
comment
Я думаю, мне нужна помощь с параметрами, они синие в приведенном выше коде... Обновлен с кодом asp, который у меня есть до сих пор..   -  person Frank    schedule 05.08.2010


Ответы (1)


Во-первых, setRequestHeader не содержит двоеточия. . Это должно быть просто

xmlHttp.setRequestHeader "Host", "gdata.youtube.com"
xmlHttp.setRequestHeader "Authorization", "AuthSub token=" & token
xmlHttp.setRequestHeader "GData-Version", "2"
xmlHttp.setRequestHeader "Content-Length", "<content_length>" <-- THIS IS IMPORTANT!
xmlHttp.setRequestHeader "Content-Type", "application/atom+xml; charset=UTF-8"

Далее, вы отправляете правильную длину содержимого? Это ДОЛЖНО быть точным. Я предполагаю, что отсутствующая «8» в вашем заголовке Content-Type в конце была опечаткой.

Наконец, вам НЕОБХОДИМО немедленно установить Fiddler и упростить себе жизнь.

person Michael Pryor    schedule 05.08.2010
comment
Как программно измерить длину контента? - person Frank; 06.08.2010
comment
СПАСИБО, БОЛЬШЕ НЕТ ОШИБОК, еще нужно кое-что выяснить, но с его заголовками все в порядке ... Спасибо и за скрипача, понял - person Frank; 06.08.2010
comment
СВЯТАЯ @#)*@$@#, смотрите, кто ответил на мой вопрос! Вот почему правила Stack Overflow... Финансовый директор находит время отвечать на сообщения! ОЧЕНЬ КРУТО - person Frank; 06.08.2010