como funcionan las api web?

Iniciado por Elemental Code, 31 Octubre 2010, 21:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Elemental Code

Hola
Quiero armar un programa que pegue un texto X en alguna pagina como Pastebin.com o tinypaste.com
Las dos tienen apis.
http://tinypaste.com/api/doc/create
http://pastebin.com/api.php

Pero no entiendo ni cuarto de PHP asi que toy bastante frito.

Lo unico que tengo es el codigo de karckrak para postear en twitter y tampoco lo entiendo >.<


aca les dejo la funcion que armo karckrak para el tweetwlm
Código (vb) [Seleccionar]

Public Sub TweetIt(ByVal sStr As String)
    Const sURL      As String = "http://api.twitter.com/1/statuses/update.xml?status="
    Dim oWinHTTP    As Object 'As New WinHttp.WinHttpRequest

    Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

    With oWinHTTP
        Call .Open("POST", sURL & sStr)
        Call .SetCredentials(App.ProductName, App.Comments, 0)
        Call .Send
    End With
   
    Set oWinHTTP = Nothing
End Sub


Gracias por la ayuda

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

raul338

Con pastebin es mas facil ya que tienes que enviar una peticion post y esperar su respuesta :)
Lee un poco sobre el protocolo HTTP y veras :)

Con tinypaste es casi lo mismo pero se mezcla con html y json, y si no sabes javascript se te va a complicar un poco :P

Elemental Code

#2
Cita de: raul338 en 31 Octubre 2010, 21:59 PM
Lee un poco sobre el protocolo HTTP y veras :)

Ya lei todo pero sigo sin entender como hacerlo siquiera manualmente.

http://en.wikipedia.org/wiki/POST_%28HTTP%29
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

eso lei
sigo sin entender.
como se supone que es

Como corno le pido POST a esa URL?
http://pastebin.com/api_public.php

expliquenme




haciendo prueva y error di de cara contra este codigo
Código (vb) [Seleccionar]
   Const sURL      As String = "http://pastebin.com/api_public.php"
   Dim oWinHTTP    As Object 'As New WinHttp.WinHttpRequest

   Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

   With oWinHTTP
       Call .Open("POST", sURL, False)
       Call .Send("paste_code=Robochot")
       MsgBox .responseText, vbInformation
   End With
   
   Set oWinHTTP = Nothing


pero me sigue devolviendo error
ademas estoy deduciendo que .open pide los sig parametros Tipo (POST) , URL y NUSEQUE pero encontre que va en false.

AYUDENME




EDITO 2

Encontre los comandos del objeto raro ese
http://www.neilstuff.com/winhttp/

pero sigo sin entender porque no anda :S

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

raul338

Código (vb) [Seleccionar]

Dim cookie As String

Private Function Request(page As String, host As String, Optional postData As String = vbNullString)
   Dim s As String
   If postData <> "" Then
       s = "POST /" & page & " HTTP/1.1" & vbNewLine
   Else
       s = "GET /" & page & " HTTP/1.1" & vbNewLine
   End If
   s = s & "Host: " & host & vbNewLine
   s = s & "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10" & vbNewLine
   s = s & "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbNewLine
   s = s & "Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3" & vbNewLine
   s = s & "Accept -Encoding: gzip , deflate" & vbNewLine
   If cookie <> "" Then s = s & "Cookie: " & cookie
   s = s & "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbNewLine
   s = s & "Keep-Alive: 115" & vbNewLine
   If postData <> "" Then
       s = s & "Content-type: application/x-www-form-urlencoded" & vbNewLine
       s = s & "Content-length: " & LenB(postData) & vbNewLine
   End If
   s = s & "Connection:     close" & vbNewLine & vbNewLine & postData
   Socket.SendData s
End Function

Private Sub socket_DataArrival(ByVal bytesTotal As Long)
   Dim t As String
   Socket.GetData t, vbString, bytesTotal
'    Debug.Print t
   If t Like "HTTP/1.0*" Then
       If cookie = "" And (status = 2 Or status = 3) Then
           'Set-Cookie: PHPSESSID=f1fa53db6eafd9cb18628e070c7a0050; expires=Mon, 18-Oct-2010 23:37:53 GMT; path=/
           Dim i As Long
           i = InStr(t, "Set-Cookie: ") + Len("Set-Cookie: ")
           cookie = Mid$(t, i, 43)
       End If
       Exit Sub
   End If
   ' Evaluar la respuesta :) del socket
End Sub


Es un extracto de un programa estilo "no-ip" utilizando CSocketPlus o CSOcketMaster (ni recuerdo cual era :xD). Fijate bien las cabeceras http (tuve que "disfrazarme" de Firefox porque el hosting que tengo no permite llamadas directas :xD)

Vos en el postData lo envias como si fuera el final de un url

dato1=valor1&dato2=valor2

Lo demas, lo dejo que lo descubras por vos mismo :P

En el parametro host, va solo el dominio (ej: raul338.com.ar)

Elemental Code

muy complicado el codigo.
yo "supuestamente" no necesito disfrasarme de nada.
Es una api publica  :-\

el post de datos esta bien pero me debuelve que le estoy errando en la peticion POST.

asi estan bien los comandos que tengo escritos?

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

BlackZeroX

.
Para los header HTTP 1.0-1.1

Pueden usar esto para hacer los parse adecuadamente sin tanto texto que marea...:

http://infrangelux.sytes.net/filex/?file=Http%201.1%20Protocol.zip&dir=/BlackZeroX/Programacion/vb6/Protocolos

Dulces Lunas!¡.
.
The Dark Shadow is my passion.