intégration ASP classique avec l'API Tumblr
-
09-10-2019 - |
Question
Essayer d'intégrer ASP classique avec l'API Tumblr. Je veux automatiser la La Tumblr API d'écriture ainsi que des messages du site ASP classique. L'API Tumblr se trouve ici: http://www.tumblr.com/docs/en/api .
Ceci est l'exemple PHP d'écriture pour l'API Tumblr.
// 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";
}
J'essaie une traduction en ASP. Je dois savoir comment obtenir le retour d'état de la page. Même un soupçon de commencer avec serait génial. Une solution, encore mieux. Je suis arrivé jusqu'ici avec ASP classique et Microsoft XMLHttpObject:
' 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
Voici 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.
La solution
Pour exécuter une requête POST via ASP classique, tout ce que vous devez faire est d'utiliser la bibliothèque de MSXML2
(comme vous le feriez dans IE Ajax):
construire vos données de demande en tant que chaîne URL de la même manière que vous BUID les paramètres d'un GET. Assurez-vous qu'il est urlencoded
dim request_data: request_data = "key1=value1&key2=value2"
créer l'objet de la demande et se connecter à l'URL par la poste. le 3è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
définir 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 alors 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 / fr-fr / bibliothèque / ms754586 (v = VS.85) .aspx
ok, j'ai réussi à obtenir ce travail
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
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 et mot de passe
content = Server.URLEncode(content)
content = content & "&email=" & email
content = content & "&password=" & password
mais je reçu un message « message ne doit pas être vide »