2010-12-07 3 views
0

Essayer d'intégrer ASP classique avec l'API Tumblr. Je veux automatiser l'API d'écriture de Tumblr avec les messages du site ASP classique. L'API Tumblr se trouve ici: http://www.tumblr.com/docs/en/api.Intégration ASP classique avec l'API Tumblr

Ceci est l'exemple d'écriture PHP pour l'API Tumblr.

// 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"; 
} 

J'essaie une traduction en ASP. J'ai besoin de savoir comment récupérer le statut de la page. Même un indice pour commencer serait génial. Une solution, encore mieux. Je suis arrivé jusqu'ici avec ASP classique et Microsoft 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 

est ici le bon code, après le procès et l'erreur, pour un poste régulier à l'aide Tumblr ASP classique. Merci à https://stackoverflow.com/users/69820/oracle-certified-professional pour l'aide.

' 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 

J'ajouterons d'autres exemples pour les postes Tumblr (photos, citations, etc.) sur http://www.genxts.com dans quelques jours.

Répondre

0

Pour exécuter une requête POST via ASP classique, tout ce que vous devez faire est d'utiliser la bibliothèque MSXML2 (comme vous le feriez dans IE Ajax):

construire vos données de demande en tant que chaîne URL de la même façon que vous Buid paramètres pour un GET. Assurez-vous que l'URL est encodée

dim request_data: request_data = "key1=value1&key2=value2" 

créer l'objet de requête et de vous connecter à l'URL via un message. le troisième paramètre détermine si l'appel est synchrone ou non. sans doute vous avez besoin de la version serveur de l'objet, au lieu de l'objet standard MSXML2.XMLHTTP

dim http: set http = CreateObject("MSXML2.ServerXMLHTTP") 
http.open "POST", "http://www.tumblr.com/api/write", false 

fixe les en-têtes de requête HTTP dont vous avez besoin

http.setRequestHeader "Content-type", "..." 

ajouter vos données de demande à la demande

http.send request_data 

vous pouvez ensuite accéder à la réponse via

dim text: text = http.responseText 

ou

dim xml: set xml = http.responseXML 

en fonction du type de données que vous êtes de retour. Voici un lien pratique: http://msdn.microsoft.com/en-us/library/ms754586(v=VS.85).aspx


ok, j'ai réussi à obtenir ce travail

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 

il semble qu'il n'a pas aimé le codage URL. J'ai essayé juste coder l'autre contenu qui n'a pas été l'e-mail & mot de passe

content = Server.URLEncode(content) 
content = content & "&email=" & email 
content = content & "&password=" & password 

mais je suis arrivé un « poste ne doit pas être vide » un message

+0

Quel type de contenu dois-je utiliser? Je suppose que je suis se rapprocher car j'obtiens une "Autorisation Échec" en tant que réponse textuelle.De toute façon pour traduire cette page (http://efreedom.com/Question/1-2326071/Sending-POST-Request-Cocoa-Tumblr) dans l'exemple Classic ASP ci-dessus. Étant donné que l'API Tumblr ne fournit pas de messages d'erreur spécifiques, il ne s'agit que d'essais et d'erreurs. – Patriotec

+0

vous étiez presque là. J'ai dû vérifier la documentation de l'api. les publications régulières ont besoin d'un titre et d'un corps. aussi, si vous ne server.urlencode l'email, le mot de passe et le type, juste tout le reste, cela fonctionne. merci pour l'aide bien monsieur. – Patriotec