【问题标题】:Classic ASP MSXML2.ServerHTTP Post - Youtube Api经典 ASP MSXML2.ServerHTTP Post - Youtube Api
【发布时间】:2010-08-05 11:20:54
【问题描述】:

我正在尝试构建一个可以将文件上传到 youtube 的应用程序。 我已经让 OAuth 工作了,而 Youtube 正在返回一个会话!

我遇到的问题是,youtube 要求我做一个 XMLHTTP POST 来获取一个我可以通过我的网页上传的 url。

我不知道如何使用 youtube 所需的额外参数制作 XMLHTTP Post。 他们有 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

【问题讨论】:

  • 你用的是VBScript还是JScript?
  • Vbscript...感谢您研究这个...我真的要学习 .NET 或者 PHP。我晚了 10 年 =(
  • 您是否需要帮助添加 HTTP 标头或创建 XML?请发布您到目前为止的代码。
  • 我想我需要参数方面的帮助,它们在上面的代码中是蓝色的......更新了我到目前为止的asp代码......

标签: asp-classic header youtube-api serverxmlhttp


【解决方案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"

接下来,您发送的内容长度是否正确?这需要准确。 我认为最后您的 Content-Type 标头中缺少的“8”是一个错字。

最后,您需要立即安装Fiddler,让您的生活更简单。

【讨论】:

  • 如何以编程方式测量内容长度?
  • THANKS NO MORE ERRORS,,仍然需要弄清楚一些东西,但它的标题很好......也感谢提琴手,明白了
  • HOLY @#)*@$@#,看看谁回答了我的问题!这就是 Stack Overflow 规则的原因…… CFO 抽出时间来回答帖子!超级酷
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多