integrazione ASP Classic con l'API Tumblr
-
09-10-2019 - |
Domanda
Il tentativo di integrare Classic ASP con l'API Tumblr. Voglio automatizzare la scrittura di API Il Tumblr con messaggi dal sito web Classic ASP. L'API Tumblr si trova qui: http://www.tumblr.com/docs/en/api .
Questo è l'esempio PHP scrittura per 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";
}
sto cercando una traduzione in ASP. Ho bisogno di sapere come ottenere la parte posteriore di stato dalla pagina. Anche un suggerimento per cominciare sarebbe grande. Una soluzione, ancora meglio. Ho ottenuto fino a questo punto con Classic ASP e 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
Ecco il codice corretto, dopo tentativi ed errori, per un posto regolare per Tumblr con Classic ASP. Grazie a https://stackoverflow.com/users/69820/oracle-certified-professional per l'aiuto .
' 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
sarò l'aggiunta di altri esempi per i posti di Tumblr (foto, citazioni, ecc) su http: // www. genxts.com in pochi giorni.
Soluzione
Per eseguire una richiesta POST tramite ASP classico, tutto quello che dovete fare è utilizzare la libreria MSXML2
(come si farebbe in IE Ajax):
costruire i dati di richiesta come una stringa URL allo stesso modo in cui si buid parametri per un GET. Assicurarsi che sia urlencoded
dim request_data: request_data = "key1=value1&key2=value2"
creare l'oggetto di richiesta e connettersi a l'url via posta. 3 ° parametro determina se la chiamata è sincrona o meno. presumibilmente è necessaria la versione del server dell'oggetto, anziché l'oggetto MSXML2.XMLHTTP
standard di
dim http: set http = CreateObject("MSXML2.ServerXMLHTTP")
http.open "POST", "http://www.tumblr.com/api/write", false
impostare tutte le intestazioni di richiesta HTTP è necessario
http.setRequestHeader "Content-type", "..."
aggiungere i dati di richiesta alla richiesta ??p>
http.send request_data
si può quindi accedere alla risposta tramite
dim text: text = http.responseText
o
dim xml: set xml = http.responseXML
a seconda del tipo di dati che si sta tornando. Ecco un link a portata di mano: http://msdn.microsoft .com / it-it / library / ms754586 (v = VS.85) aspx
ok, sono riuscito ad ottenere questo al lavoro
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
sembra che non ha fatto come la codifica URL. Ho provato solo la codifica l'altro contenuto che non era l'e-mail e la password
content = Server.URLEncode(content)
content = content & "&email=" & email
content = content & "&password=" & password
, ma ho ricevuto un messaggio di "post non deve essere vuoto"