与Tumblr API集成的经典ASP
问题描述:
尝试将经典ASP与Tumblr API集成。我想自动化Tumblr编写API以及经典ASP网站的帖子。 Tumblr API位于:http://www.tumblr.com/docs/en/api。与Tumblr API集成的经典ASP
这是写Tumblr API的PHP示例。
// Authorization info
$tumblr_email = '[email protected]';
$tumblr_password = 'secret';
// Data for new record
$post_type = 'regular';
$post_title = 'The post title';
$post_body = 'This is the body of the post.';
// Prepare POST request
$request_data = http_build_query(
array(
'email' => $tumblr_email,
'password' => $tumblr_password,
'type' => $post_type,
'title' => $post_title,
'body' => $post_body,
'generator' => 'API example'
)
);
// Send the POST request (with cURL)
$c = curl_init('http://www.tumblr.com/api/write');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $request_data);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($c);
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
// Check for success
if ($status == 201) {
echo "Success! The new post ID is $result.\n";
} else if ($status == 403) {
echo 'Bad email or password';
} else {
echo "Error: $result\n";
}
我试图翻译成ASP。我需要知道如何从页面获取状态。即使有一个提示开始会很好。一个解决方案,甚至更好。我已经得到了这么远与传统的ASP和微软XMLHttpObject:
' Authorization info
tumblr_email = "[email protected]"
tumblr_password = "secret"
' Data for new record
post_type = "regular"
post_title = "The post title"
post_body = "This is the body of the post."
' Prepare POST request
request_data = "email=" tumblr_email & "&" &
request_data = request_data & "password=" & tumblr_password & "&" &
request_data = request_data & "type=" & post_type & "&" &
request_data = request_data & "title=" & post_title & "&" &
request_data = request_data & "body=" & post_body & "&" &
request_data = request_data & "generator=Your Generator Name"
request_data = server.urlencode(request_data)
Dim objHttp, strQuery
strQuery = “http://www.tumblr.com/api/write”
set objHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP”)
objHttp.open “GET”, strQuery, false
objHttp.send
Response.Write objHttp.ResponseText
Set objHttp = Nothing
下面是正确的代码,经过反复试验,对于一个普通岗位的tumblr使用传统的ASP。感谢https://*.com/users/69820/oracle-certified-professional的帮助。
' Authorization info
tumblr_email = "your_registered_email"
tumblr_password = "your_tumblr_password"
' Data for new record
post_type = "regular"
post_title = "The post title"
post_body = "This is the body of the post."
' Prepare POST request
request_data = "email=" & tumblr_email & "&"
request_data = request_data & "password=" & tumblr_password & "&"
request_data = request_data & "type=" & post_type & "&"
request_data = request_data & "title=" & server.urlencode(post_title) & "&"
request_data = request_data & "body=" & server.urlencode(post_body)
set http = CreateObject("MSXML2.ServerXMLHTTP")
http.open "POST", "http://www.tumblr.com/api/write", false
http.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
http.setRequestHeader "Content-length", len(content)
http.setRequestHeader "Connection", "close"
http.send request_data
Response.Write http.responseText
我会加入对的tumblr帖子(照片,报价等)上http://www.genxts.com几天其他例子。
答
要通过传统的ASP运行POST请求,所有你需要做的就是使用MSXML2
库(如你在IE阿贾克斯做):
建立你的请求数据作为一个URL字符串相同的方式,你为GET创建buid参数。确保它是urlencoded
dim request_data: request_data = "key1=value1&key2=value2"
创建请求对象并通过post连接到url。第三个参数决定呼叫是否同步。想必你所需要的对象的服务器版本,而不是标准的MSXML2.XMLHTTP
对象
dim http: set http = CreateObject("MSXML2.ServerXMLHTTP")
http.open "POST", "http://www.tumblr.com/api/write", false
组需要
http.setRequestHeader "Content-type", "..."
请求数据添加到请求
http.send request_data
任何HTTP请求头
然后您可以通过
dim text: text = http.responseText
或
dim xml: set xml = http.responseXML
取决于数据您传回类型。这里有一个方便的链接:http://msdn.microsoft.com/en-us/library/ms754586(v=VS.85).aspx
好吧,我设法得到这个工作
dim http: set http = CreateObject("MSXML2.ServerXMLHTTP")
dim email: email = "[email protected]"
dim password: password = "*password"
dim content: content = content & "type=regular"
content = content & "&body=this is a test"
content = content & "&email=" & email
content = content & "&password=" & password
http.open "POST", "http://www.tumblr.com/api/write", false
http.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
http.setRequestHeader "Content-length", len(content)
http.setRequestHeader "Connection", "close"
http.send content
Response.Write http.responseText
看来它不喜欢的URL编码。我尝试了编码的其他内容不是电子邮件&密码
content = Server.URLEncode(content)
content = content & "&email=" & email
content = content & "&password=" & password
,但我得到了一个“后不能为空”的消息
内容类型,我应该用什么呢?我想我越来越近,因为我得到了“授权失败”作为文本响应。无论如何翻译此页面(http://zh.efreedom.com/Question/1-2326071/Sending-POST-Request-Cocoa-Tumblr)到上面的经典ASP示例。由于Tumblr API没有提供实际的特定错误消息,因此这只是试验和错误。 – Patriotec 2010-12-07 23:11:28