Klassische ASP Integration mit dem Tumblr API
-
09-10-2019 - |
Frage
Der Versuch, klassische ASP mit dem Tumblr API zu integrieren. Ich möchte das die Tumblr Schreib-API automatisieren sowie Beiträge aus der klassischen ASP-Website. Die Tumblr API befindet sich hier: http://www.tumblr.com/docs/en/api .
Dies ist das Schreib PHP Beispiel für den Tumblr-API.
// Authorization info
$tumblr_email = 'info@davidville.com';
$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";
}
Ich versuche, eine Übersetzung in ASP. Ich muss wissen, wie Sie den Status wieder von der Seite zu bekommen. Auch ein Hinweis für den Anfang wäre toll. Eine Lösung, sogar noch besser. Ich habe bis hierher mit klassischen ASP und Microsoft XMLHttpObject bekommen:
' Authorization info
tumblr_email = "info@davidville.com"
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
Hier ist der richtige Code, nach Versuch und Irrtum, für einen regelmäßigen Beitrag Tumblr mit klassischen ASP. Dank https://stackoverflow.com/users/69820/oracle-certified-professional für die Hilfe .
' 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
werde ich andere Beispiele für Tumblr Beiträge das Hinzufügen (Fotos, Zitate, etc.) auf http: // www. genxts.com in ein paar Tagen.
Lösung
Um eine POST-Anforderung über klassische ASP laufen, alles, was Sie brauchen, ist die MSXML2
Bibliothek verwenden tun (wie Sie in IE Ajax tun würden):
bauen Sie Ihre Anfrage Daten als URL-Zeichenfolge, die die gleiche Art und Weise, wie Sie Parameter für eine GET buid. Stellen Sie sicher, dass es urlencoded
dim request_data: request_data = "key1=value1&key2=value2"
das Request-Objekt erstellen und an die URL per Post an. der dritte Parameter bestimmt, ob der Anruf synchron ist oder nicht. vermutlich müssen Sie die Serverversion des Objekts anstelle des Standard-MSXML2.XMLHTTP
Objekt
dim http: set http = CreateObject("MSXML2.ServerXMLHTTP")
http.open "POST", "http://www.tumblr.com/api/write", false
alle http-Request-Header gesetzt Sie brauchen,
http.setRequestHeader "Content-type", "..."
fügen Sie Ihre Anfrage Daten auf die Anfrage
http.send request_data
Sie können dann auf die Antwort über
dim text: text = http.responseText
oder
dim xml: set xml = http.responseXML
in Abhängigkeit von der Art der Daten, die Sie zurück. Hier ist ein handlicher Link: http://msdn.microsoft .com / de-de / library / ms754586 (v = VS.85) aspx
ok, ich es geschafft, dies zu Arbeit bekommen
dim http: set http = CreateObject("MSXML2.ServerXMLHTTP")
dim email: email = "email@example.com"
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
es scheint, es nicht wie die URL-Codierung hat. Ich habe versucht, kodiert nur die anderen Inhalte, die nicht die E-Mail-Passwort war
content = Server.URLEncode(content)
content = content & "&email=" & email
content = content & "&password=" & password
, aber ich habe ein "Post darf nicht leer sein" message