Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Cramel] HTTPRequest.cml ~ Haz peticiones GET & POST

  • 2 Respuestas
  • 3911 Vistas

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

Desconectado BlackBlex

  • *
  • Underc0der
  • Mensajes: 49
  • Actividad:
    0%
  • Reputación 4
    • Ver Perfil
  • Skype: blackblex
  • Twitter: blackblex
« en: Junio 26, 2017, 12:53:10 am »
Les traigo este código el cual te facilita las peticiones GET y POST.


Información
  • Compatible con Cramel: 2.0.0.362
  • Librerías requeridas: MSVBVM60.cml


Tiene los siguientes métodos:
  • Conectar(Opcional Usuario:Cadena = Nulo, Opcional Contraseña:Cadena = Nulo) - Establece una conexión con el servidor
  • Enviar - Envía la petición a la dirección establecida
  • LeerRespuesta - Devuelve la pagina (el código fuente) resultante de la petición

Tiene las siguientes Propiedades:
  • Version - Establece o devuelve la versión del HTTP que se usará para la petición | HTTP/1.0 - HTTP/1.1
  • Agente - Establece o devuelve el nombre de la aplicación | User-Agent
  • Servidor - Establece o devuelve la dirección del servidor al que se hará la petición | No debe incluirse el http://
  • Puerto - Establece o devuelve el puerto usado en la petición | Por defecto 80
  • Metodo - Establece o devuelve el método usado para hacer la petición | GET - POST
  • Parametros - Establece los parametros que se usaran para la petición | [/index.php?test=Hola
  • Dirección - Establece o devuelve la dirección a la que se hará la petición, ya sea a una carpeta o archivo | Ejemplo: /index.php | Nota: debe llevar el / al prinicipio
  • Error - Devuelve el error que sucedió si algo no salió bien
  • StatusCode - Devuelve el código de estado de la petición
  • StatusText - Devuelve el texto referente al código de estado
  • TamañoPagina - Devuelve el tamaño que tiene la pagina resultante de la petición, solo si no hubo redirección por en medio

Para usarla solo es de Importar la librería Cramel, HTTPRequest, su archivo de constantes y apis propia; después declaramos una variable del tipo HTTP y creamos el objecto.

Y es todo por el momento.

Aquí el código HTTPRequest.cml:
Código: Text
  1. '/**
  2. ' * HTTP Request
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: HTTPRequest.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Clase HTTP,_
  12.     pServidor:Cadena,_
  13.     pDirección:Cadena,_
  14.     pAgente:Cadena,_
  15.     pMetodo:Cadena,_
  16.     pError:Cadena,_
  17.     pVersion:Cadena,_
  18.     pPuerto:Word,_
  19.     ppOpen:Entero,_
  20.     pConnect:Entero,_
  21.     pRequest:Entero,_
  22.     pStatusCode:Entero,_
  23.     pStatusText:Cadena,_
  24.     pTamañoPagina:Entero
  25.  
  26.     Var Content:Cadena
  27.     Var Parametros:Cadena
  28.     Var Buffer:Cadena
  29.     Var BufferSta:Entero
  30.     Var Lent:Entero
  31.     Var QueryInfo:Cadena
  32.     Var TamQueryInfo:Entero
  33.  
  34.     Constructor:Inicializar
  35.     Destructor:Finalizar
  36.  
  37.     Sección Privada
  38.         Proc Inicializar
  39.             pAgente = "CramelRequest"
  40.             pPuerto = INTERNET_DEFAULT_HTTP_PORT
  41.             pVersion = "HTTP/1.1"
  42.             pMetodo = "GET"
  43.         FinProc
  44.  
  45.         Proc Finalizar
  46.             Si ( pConnect ) Entonces
  47.                 InternetCloseHandle(pConnect)
  48.             FinSi
  49.             Si ( ppOpen ) Entonces
  50.                 InternetCloseHandle(ppOpen)
  51.             FinSi
  52.         FinProc
  53.  
  54.         Proc SetStatusText
  55.             Seleccionar pStatusCode
  56.                 Caso HTTP_STATUS_CONTINUE
  57.                     pStatusText = "La solicitud puede continuar."
  58.                 Caso HTTP_STATUS_OK
  59.                     pStatusText = "La solicitud se completó correctamente."
  60.                 Caso HTTP_STATUS_MOVED
  61.                     pStatusText = "El recurso solicitado se ha asignado a un nuevo URI permanente (Uniform Resource Identifier), y cualquier referencia futura a este recurso se debe hacer usando uno de los URIs devueltos."
  62.                 Caso HTTP_STATUS_REDIRECT
  63.                     pStatusText = "El recurso solicitado reside temporalmente bajo un URI diferente (Uniform Resource Identifier)."
  64.                 Caso HTTP_STATUS_BAD_REQUEST
  65.                     pStatusText = "La solicitud no pudo ser procesada por el servidor debido a la sintaxis no válida."
  66.                 Caso HTTP_STATUS_FORBIDDEN
  67.                     pStatusText = "Acceso denegado."
  68.                 Caso HTTP_STATUS_NOT_FOUND
  69.                     pStatusText = "El servidor no ha encontrado nada que coincida con el URI solicitado (Uniform Resource Identifier)."
  70.                 Caso HTTP_STATUS_SERVER_ERROR
  71.                     pStatusText = "El servidor encontró una condición inesperada que le impidió cumplir con la solicitud."
  72.                 Caso HTTP_STATUS_SERVICE_UNAVAIL
  73.                     pStatusText = "El servicio está temporalmente sobrecargado."
  74.             FinSeleccionar
  75.         FinProc
  76.  
  77.         Proc SetError
  78.             Seleccionar GetLastError()
  79.                 Caso ERROR_INTERNET_OPERATION_CANCELLED
  80.                     pError = "La operación se canceló, normalmente porque el identificador en el que se estaba ejecutando la solicitud se cerró antes de que se completase la operación."
  81.                 Caso ERROR_INTERNET_INCORRECT_HANDLE_TYPE
  82.                     pError = "El tipo de identificador suministrado es incorrecto para esta operación."
  83.                 Caso ERROR_INTERNET_INTERNAL_ERROR
  84.                     pError = "Ha ocurrido un error interno."
  85.                 Caso ERROR_INTERNET_INVALID_URL
  86.                     pError = "La URL no es válida."
  87.                 Caso ERROR_INTERNET_UNRECOGNIZED_SCHEME
  88.                     pError = "El esquema de la URL es distinto de \x22http:\x22 o \x22https:\x22."
  89.                 Caso ERROR_INTERNET_SHUTDOWN
  90.                     pError = "La ayuda de la función INTERNET se está cerrando o está fuera del alcance."
  91.                 Caso ERROR_NOT_ENOUGH_MEMORY
  92.                     pError = "No hay suficiente memoria disponible para completar la operación solicitada."
  93.                 Caso ERROR_INTERNET_CANNOT_CONNECT
  94.                     pError = "La conexión al servidor falló."
  95.                 Caso ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED
  96.                     pError = "El servidor requiere autenticación de cliente SSL."
  97.                 Caso ERROR_INTERNET_CONNECTION_ERROR
  98.                     pError = "Se ha restablecido o se ha finalizado la conexión con el servidor o se ha detectado un protocolo SSL incompatible."
  99.                 Caso ERROR_INTERNET_INCORRECT_HANDLE_STATE
  100.                     pError = "La operación solicitada no se puede realizar porque el identificador suministrado no está en el estado correcto."
  101.                 Caso ERROR_INTERNET_LOGIN_FAILURE
  102.                     pError = "El intento de inicio de sesión falló. Cuando se encuentra este error, el identificador de solicitud debe cerrarse con InternetCloseHandle."
  103.                 Caso ERROR_INTERNET_NAME_NOT_RESOLVED
  104.                     pError = "No se puede resolver el nombre del servidor."
  105.                 Caso ERROR_INTERNET_RESPONSE_DRAIN_OVERFLOW
  106.                     pError = "La respuesta entrante excede un tamaño límite interno."
  107.                 Caso ERROR_INTERNET_SECURE_FAILURE
  108.                     pError = "Uno o más errores se encontraron en el certificado SSL enviado por el servidor."
  109.                 Caso ERROR_INTERNET_TIMEOUT
  110.                     pError = "El tiempo de la solicitud se ha agotado."
  111.                 Caso ERROR_INVALID_PARAMETER
  112.                     pError = "El parámetro es invalido"
  113.                 Caso ERROR_INTERNET_RESEND_REQUEST
  114.                     pError = "La aplicación debe llamar HttpSendRequest de nuevo debido a un problema de redirección o la autenticación."
  115.                 Caso ERROR_INSUFFICIENT_BUFFER
  116.                     pError = "Buffer insuficiente."
  117.             FinSeleccionar
  118.             SetLastError(0)
  119.         FinProc
  120.  
  121.         Proc escribirServidor(dato:Cadena)
  122.             pServidor = dato
  123.         FinProc
  124.         Proc leerServidor:Cadena
  125.             Resultado = pServidor
  126.         FinProc
  127.        
  128.         Proc escribirPuerto(dato:Word)
  129.             pPuerto = dato
  130.         FinProc
  131.         Proc leerPuerto:Word
  132.             Resultado = pPuerto
  133.         FinProc
  134.  
  135.         Proc escribirAgente(dato:Cadena)
  136.             pAgente = dato
  137.             Si (pRequest) Entonces
  138.                 HttpAddRequestHeaders(pRequest, pAgente, -1, (HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD))
  139.             FinSi
  140.         FinProc
  141.         Proc leerAgente:Cadena
  142.             Resultado = pAgente
  143.         FinProc
  144.  
  145.         Proc escribirMetodo(dato:Cadena)
  146.             pMetodo = Mayúsculas(dato)
  147.         FinProc
  148.         Proc leerMetodo:Cadena
  149.             Resultado = pMetodo
  150.         FinProc
  151.  
  152.         Proc escribirDirección(dato:Cadena)
  153.             pDirección = dato
  154.         FinProc
  155.         Proc leerDirección:Cadena
  156.             Resultado = pDirección
  157.         FinProc
  158.  
  159.         Proc escribirError(dato:Cadena)
  160.  
  161.         FinProc
  162.         Proc leerError:Cadena
  163.             Resultado = pError
  164.         FinProc
  165.  
  166.         Proc escribirVersion(dato:Cadena)
  167.             pVersion = dato
  168.         FinProc
  169.         Proc leerVersion:Cadena
  170.             Resultado = pVersion
  171.         FinProc
  172.  
  173.         Proc escribirStatusCode(dato:Entero)
  174.             pStatusCode = dato
  175.             SetStatusText
  176.         FinProc
  177.         Proc leerStatusCode:Entero
  178.             Resultado = pStatusCode
  179.         FinProc
  180.  
  181.         Proc escribirStatusText(dato:Cadena)
  182.             pStatusText = dato
  183.         FinProc
  184.         Proc leerStatusText:Cadena
  185.             Resultado = pStatusText
  186.         FinProc
  187.  
  188.         Proc escribirTamañoPagina(dato:Entero)
  189.             pTamañoPagina = dato
  190.         FinProc
  191.         Proc leerTamañoPagina:Entero
  192.             Resultado = pTamañoPagina
  193.         FinProc
  194.  
  195.     Sección Pública
  196.         Prop Version:Cadena
  197.             Lectura:leerVersion
  198.             Escritura:escribirVersion
  199.         FinProp
  200.  
  201.         Prop Agente:Cadena
  202.             Lectura:leerAgente
  203.             Escritura:escribirAgente
  204.         FinProp
  205.  
  206.         Prop Servidor:Cadena
  207.             Lectura:leerServidor
  208.             Escritura:escribirServidor
  209.         FinProp
  210.  
  211.         Prop Puerto:Word
  212.             Lectura:leerPuerto
  213.             Escritura:escribirPuerto
  214.         FinProp
  215.  
  216.         Prop Metodo:Cadena
  217.             Lectura:leerMetodo
  218.             Escritura:escribirMetodo
  219.         FinProp
  220.  
  221.         Prop Dirección:Cadena
  222.             Lectura:leerDirección
  223.             Escritura:escribirDirección
  224.         FinProp
  225.  
  226.         Prop Error:Cadena
  227.             Lectura:leerError
  228.             Escritura:escribirError
  229.         FinProp
  230.  
  231.         Prop StatusCode:Entero
  232.             Lectura:leerStatusCode
  233.             Escritura:escribirStatusCode
  234.         FinProp
  235.  
  236.         Prop StatusText:Cadena
  237.             Lectura:leerStatusText
  238.             Escritura:escribirStatusText
  239.         FinProp
  240.  
  241.         Prop TamañoPagina:Entero
  242.             Lectura:leerTamañoPagina
  243.             Escritura:escribirTamañoPagina
  244.         FinProp
  245.  
  246.         Proc Conectar(Opcional Usuario:Cadena = Nulo, Opcional Contraseña:Cadena = Nulo):Booleano
  247.             Si pServidor = "" Entonces
  248.                 Salir
  249.             FinSi
  250.  
  251.             ppOpen = InternetOpen(pAgente, INTERNET_OPEN_TYPE_PRECONFIG, Nulo, Nulo, 0)
  252.  
  253.             Si (ppOpen) Entonces
  254.                 pConnect = InternetConnect(ppOpen, pServidor, pPuerto, Usuario, Contraseña, INTERNET_SERVICE_HTTP, 0, 0)
  255.                 Si (pConnect) Entonces
  256.                     Devolver Verdad
  257.                 SiNo
  258.                     SetError()
  259.                     Devolver Falso
  260.                 FinSi
  261.             SiNo
  262.                 Salir
  263.             FinSi
  264.         FinProc
  265.  
  266.         Proc Enviar():Entero
  267.             Si (pConnect = 0) Entonces
  268.                 Devolver Falso
  269.             FinSi
  270.  
  271.             pRequest = HttpOpenRequest(pConnect, pMetodo, pDirección, pVersion, Nulo, Nulo, (INTERNET_FLAG_NO_COOKIES Or INTERNET_FLAG_NO_CACHE_WRITE), 0)
  272.  
  273.             Si (pRequest = 0) Entonces
  274.                 SetError
  275.                 Devolver Falso
  276.             FinSi
  277.  
  278.             Si (pAgente != "") Entonces
  279.                 HttpAddRequestHeaders(pRequest, pAgente, -1, (HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD))
  280.             FinSi
  281.  
  282.             Seleccionar pMetodo
  283.                 Caso "POST"
  284.                     Content = "Content-Type: application/x-www-form-urlencoded"
  285.                     Si CadLong(Parametros) <> 0 Entonces
  286.                         Si HttpSendRequest(pRequest, Content, CadLong(Content), Parametros, CadLong(Parametros)) = Falso Entonces
  287.                             SetError
  288.                             Devolver Falso
  289.                         FinSi
  290.                     FinSi
  291.                 Caso "GET"
  292.                     Si HttpSendRequest(pRequest, Nulo, 0, Nulo, 0) = Falso Entonces
  293.                         SetError
  294.                         Devolver Falso
  295.                     FinSi
  296.             FinSeleccionar
  297.  
  298.             QueryInfo = Espacio(1024)
  299.             TamQueryInfo = CadLong(QueryInfo)
  300.             HttpQueryInfo(pRequest, HTTP_QUERY_STATUS_CODE, StrPtr(QueryInfo), [email protected], [email protected] )
  301.             EsteObjeto.StatusCode = CadEnt(QueryInfo)
  302.  
  303.             QueryInfo = Espacio(1024)
  304.             TamQueryInfo = CadLong(QueryInfo)
  305.             HttpQueryInfo(pRequest, HTTP_QUERY_CONTENT_LENGTH, StrPtr(QueryInfo), [email protected], [email protected] )
  306.             EsteObjeto.TamañoPagina = CadEnt(QueryInfo)
  307.  
  308.             Resultado = Verdad
  309.         FinProc
  310.  
  311.         Proc LeerRespuesta:Cadena
  312.             Var control:Booleano
  313.             Si (pRequest) Entonces
  314.                 control = Verdad
  315.                 Buffer = Espacio(400)
  316.                 Mientras control != Falso
  317.                     InternetReadFile(pRequest, StrPtr(Buffer), 400, [email protected])
  318.                     Si Lent = Falso Entonces
  319.                         control = Falso
  320.                         SetError
  321.                         Salir
  322.                     FinSi
  323.                     Resultado = Resultado + Buffer
  324.                 FinMientras
  325.             FinSi
  326.         FinProc
  327.  
  328. FinClase

Archivo Constantes.cml <- Se recomienda que tengan un archivo propio de constantes (y que sea global), donde puedan poner todas las constantes que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * Constantes para el HTTPRequest
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Constantes.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'Constantes HTTP
  12.     Const INTERNET_OPEN_TYPE_PRECONFIG                   = 0
  13.     Const INTERNET_OPEN_TYPE_DIRECT                      = 1
  14.     Const INTERNET_OPEN_TYPE_PROXY                       = 3
  15.     Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4
  16.    
  17.     Const INTERNET_SERVICE_FTP    = 1
  18.     Const INTERNET_SERVICE_GOPHER = 2
  19.     Const INTERNET_SERVICE_HTTP   = 3
  20.  
  21.     Const INTERNET_INVALID_PORT_NUMBER = 0    ''
  22.     Const INTERNET_DEFAULT_HTTP_PORT   = 80   ''
  23.     Const INTERNET_DEFAULT_HTTPS_PORT  = 443  ''
  24.     Const INTERNET_DEFAULT_FTP_PORT    = 21   ''
  25.     Const INTERNET_DEFAULT_SOCKS_PORT  = 1080 ''
  26.  
  27.     Const INTERNET_FLAG_RELOAD         = &80000000
  28.     Const INTERNET_FLAG_NO_CACHE_WRITE = &04000000
  29.     Const INTERNET_FLAG_PRAGMA_NOCACHE = &00000100
  30.     Const INTERNET_FLAG_NO_COOKIES     = &00080000
  31.     Const INTERNET_FLAG_SECURE         = &00800000
  32.  
  33.     Const INTERNET_OPTION_CONNECT_TIMEOUT = 2
  34.     Const INTERNET_OPTION_SEND_TIMEOUT    = 5
  35.     Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6
  36.     Const INTERNET_OPTION_SECURITY_FLAGS  = 31
  37.     Const SECURITY_FLAG_IGNORE_UNKNOWN_CA = &100
  38.  
  39.     Const HTTP_ADDREQ_FLAG_ADD_IF_NEW              = &10000000
  40.     Const HTTP_ADDREQ_FLAG_ADD                     = &20000000
  41.     Const HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA     = &40000000
  42.     Const HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = &01000000
  43.     Const HTTP_ADDREQ_FLAG_REPLACE                 = &80000000
  44.  
  45.     Const HTTP_QUERY_STATUS_CODE      = 19
  46.     Const HTTP_QUERY_STATUS_TEXT      = 20
  47.     Const HTTP_QUERY_RAW_HEADERS      = 21
  48.     Const HTTP_QUERY_RAW_HEADERS_CRLF = 22
  49.  
  50.     Const CONNECTION_TIMEOUT_MILLIS = 60000
  51.  
  52.     'Status'
  53.         Const HTTP_STATUS_CONTINUE         = 100
  54.         Const HTTP_STATUS_SWITCH_PROTOCOLS = 101
  55.  
  56.         Const HTTP_STATUS_OK              = 200
  57.         Const HTTP_STATUS_CREATED         = 201
  58.         Const HTTP_STATUS_ACCEPTED        = 202
  59.         Const HTTP_STATUS_PARTIAL         = 203
  60.         Const HTTP_STATUS_NO_CONTENT      = 204
  61.         Const HTTP_STATUS_RESET_CONTENT   = 205
  62.         Const HTTP_STATUS_PARTIAL_CONTENT = 206
  63.  
  64.         Const HTTP_STATUS_AMBIGUOUS          = 300
  65.         Const HTTP_STATUS_MOVED              = 301
  66.         Const HTTP_STATUS_REDIRECT           = 302
  67.         Const HTTP_STATUS_REDIRECT_METHOD    = 303
  68.         Const HTTP_STATUS_NOT_MODIFIED       = 304
  69.         Const HTTP_STATUS_USE_PROXY          = 305
  70.         Const HTTP_STATUS_REDIRECT_KEEP_VERB = 307
  71.  
  72.         Const HTTP_STATUS_BAD_REQUEST       = 400
  73.         Const HTTP_STATUS_DENIED            = 401
  74.         Const HTTP_STATUS_PAYMENT_REQ       = 402
  75.         Const HTTP_STATUS_FORBIDDEN         = 403
  76.         Const HTTP_STATUS_NOT_FOUND         = 404
  77.         Const HTTP_STATUS_BAD_METHOD        = 405
  78.         Const HTTP_STATUS_NONE_ACCEPTABLE   = 406
  79.         Const HTTP_STATUS_PROXY_AUTH_REQ    = 407
  80.         Const HTTP_STATUS_REQUEST_TIMEOUT   = 408
  81.         Const HTTP_STATUS_CONFLICT          = 409
  82.         Const HTTP_STATUS_GONE              = 410
  83.         Const HTTP_STATUS_LENGTH_REQUIRED   = 411
  84.         Const HTTP_STATUS_PRECOND_FAILED    = 412
  85.         Const HTTP_STATUS_REQUEST_TOO_LARGE = 413
  86.         Const HTTP_STATUS_URI_TOO_LONG      = 414
  87.         Const HTTP_STATUS_UNSUPPORTED_MEDIA = 415
  88.         Const HTTP_STATUS_RETRY_WITH        = 449
  89.  
  90.         Const HTTP_STATUS_SERVER_ERROR    = 500
  91.         Const HTTP_STATUS_NOT_SUPPORTED   = 501
  92.         Const HTTP_STATUS_BAD_GATEWAY     = 502
  93.         Const HTTP_STATUS_SERVICE_UNAVAIL = 503
  94.         Const HTTP_STATUS_GATEWAY_TIMEOUT = 504
  95.         Const HTTP_STATUS_VERSION_NOT_SUP = 505
  96.     'Status'
  97.  
  98.     'POST Header'
  99.         Const HTTP_QUERY_ACCEPT                    = 24
  100.         Const HTTP_QUERY_ACCEPT_CHARSET            = 25
  101.         Const HTTP_QUERY_ACCEPT_ENCODING           = 26
  102.         Const HTTP_QUERY_ACCEPT_LANGUAGE           = 27
  103.         Const HTTP_QUERY_ACCEPT_RANGES             = 42
  104.         Const HTTP_QUERY_AGE                       = 48
  105.         Const HTTP_QUERY_ALLOW                     = 7
  106.         Const HTTP_QUERY_AUTHORIZATION             = 28
  107.         Const HTTP_QUERY_CACHE_CONTROL             = 49
  108.         Const HTTP_QUERY_CONNECTION                = 23
  109.         Const HTTP_QUERY_CONTENT_BASE              = 50
  110.         Const HTTP_QUERY_CONTENT_DESCRIPTION       = 4
  111.         Const HTTP_QUERY_CONTENT_DISPOSITION       = 47
  112.         Const HTTP_QUERY_CONTENT_ENCODING          = 29
  113.         Const HTTP_QUERY_CONTENT_ID                = 3
  114.         Const HTTP_QUERY_CONTENT_LANGUAGE          = 6
  115.         Const HTTP_QUERY_CONTENT_LENGTH            = 5
  116.         Const HTTP_QUERY_CONTENT_LOCATION          = 51
  117.         Const HTTP_QUERY_CONTENT_MD5               = 52
  118.         Const HTTP_QUERY_CONTENT_RANGE             = 53
  119.         Const HTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2
  120.         Const HTTP_QUERY_CONTENT_TYPE              = 1
  121.         Const HTTP_QUERY_COOKIE                    = 44
  122.         Const HTTP_QUERY_COST                      = 15
  123.         Const HTTP_QUERY_CUSTOM                    = 65535
  124.         Const HTTP_QUERY_DATE                      = 9
  125.         Const HTTP_QUERY_DERIVED_FROM              = 14
  126.         Const HTTP_QUERY_ECHO_HEADERS              = 73
  127.         Const HTTP_QUERY_ECHO_HEADERS_CRLF         = 74
  128.         Const HTTP_QUERY_ECHO_REPLY                = 72
  129.         Const HTTP_QUERY_ECHO_REQUEST              = 71
  130.         Const HTTP_QUERY_ETAG                      = 54
  131.         Const HTTP_QUERY_EXPECT                    = 68
  132.         Const HTTP_QUERY_EXPIRES                   = 10
  133.         Const HTTP_QUERY_FORWARDED                 = 30
  134.         Const HTTP_QUERY_FROM                      = 31
  135.         Const HTTP_QUERY_HOST                      = 55
  136.         Const HTTP_QUERY_IF_MATCH                  = 56
  137.         Const HTTP_QUERY_IF_MODIFIED_SINCE         = 32
  138.         Const HTTP_QUERY_IF_NONE_MATCH             = 57
  139.         Const HTTP_QUERY_IF_RANGE                  = 58
  140.         Const HTTP_QUERY_IF_UNMODIFIED_SINCE       = 59
  141.         Const HTTP_QUERY_LAST_MODIFIED             = 11
  142.         Const HTTP_QUERY_LINK                      = 16
  143.         Const HTTP_QUERY_LOCATION                  = 33
  144.         Const HTTP_QUERY_MAX                       = 78
  145.         Const HTTP_QUERY_MAX_FORWARDS              = 60
  146.         Const HTTP_QUERY_MESSAGE_ID                = 12
  147.         Const HTTP_QUERY_MIME_VERSION              = 0
  148.         Const HTTP_QUERY_ORIG_URI                  = 34
  149.         Const HTTP_QUERY_PRAGMA                    = 17
  150.         Const HTTP_QUERY_PROXY_AUTHENTICATE        = 41
  151.         Const HTTP_QUERY_PROXY_AUTHORIZATION       = 61
  152.         Const HTTP_QUERY_PROXY_CONNECTION          = 69
  153.         Const HTTP_QUERY_PUBLIC                    = 8
  154.         Const HTTP_QUERY_RANGE                     = 62
  155.         Const HTTP_QUERY_RAW_HEADERS               = 21
  156.         Const HTTP_QUERY_RAW_HEADERS_CRLF          = 22
  157.         Const HTTP_QUERY_REFERER                   = 35
  158.         Const HTTP_QUERY_REFRESH                   = 46
  159.         Const HTTP_QUERY_REQUEST_METHOD            = 45
  160.         Const HTTP_QUERY_RETRY_AFTER               = 36
  161.         Const HTTP_QUERY_SERVER                    = 37
  162.         Const HTTP_QUERY_SET_COOKIE                = 43
  163.         Const HTTP_QUERY_STATUS_CODE               = 19
  164.         Const HTTP_QUERY_STATUS_TEXT               = 20
  165.         Const HTTP_QUERY_TITLE                     = 38
  166.         Const HTTP_QUERY_TRANSFER_ENCODING         = 63
  167.         Const HTTP_QUERY_UNLESS_MODIFIED_SINCE     = 70
  168.         Const HTTP_QUERY_UPGRADE                   = 64
  169.         Const HTTP_QUERY_URI                       = 13
  170.         Const HTTP_QUERY_USER_AGENT                = 39
  171.         Const HTTP_QUERY_VARY                      = 65
  172.         Const HTTP_QUERY_VERSION                   = 18
  173.         Const HTTP_QUERY_VIA                       = 66
  174.         Const HTTP_QUERY_WARNING                   = 67
  175.         Const HTTP_QUERY_WWW_AUTHENTICATE          = 40
  176.     'POST Header'
  177.  
  178.     Const INTERNET_ERROR_BASE                    = 12000                     ''
  179.     Const ERROR_INTERNET_TIMEOUT                 = (INTERNET_ERROR_BASE + 2) ''
  180.     Const ERROR_INTERNET_INTERNAL_ERROR          = (INTERNET_ERROR_BASE + 4) ''
  181.     Const ERROR_INTERNET_INVALID_URL             = (INTERNET_ERROR_BASE + 5) ''
  182.     Const ERROR_INTERNET_UNRECOGNIZED_SCHEME     = (INTERNET_ERROR_BASE + 6) ''
  183.     Const ERROR_INTERNET_NAME_NOT_RESOLVED       = (INTERNET_ERROR_BASE + 7) ''
  184.     Const ERROR_INTERNET_SHUTDOWN                = (INTERNET_ERROR_BASE + 12) ''
  185.     Const ERROR_INTERNET_LOGIN_FAILURE           = (INTERNET_ERROR_BASE + 15) ''
  186.     Const ERROR_INTERNET_OPERATION_CANCELLED     = (INTERNET_ERROR_BASE + 17) ''
  187.     Const ERROR_INTERNET_INCORRECT_HANDLE_TYPE   = (INTERNET_ERROR_BASE + 18) ''
  188.     Const ERROR_INTERNET_INCORRECT_HANDLE_STATE  = (INTERNET_ERROR_BASE + 19) ''
  189.     Const ERROR_INTERNET_CANNOT_CONNECT          = (INTERNET_ERROR_BASE + 29) ''
  190.     Const ERROR_INTERNET_CONNECTION_ERROR        = (INTERNET_ERROR_BASE + 30) ''
  191.     Const ERROR_INTERNET_RESEND_REQUEST          = (INTERNET_ERROR_BASE + 32) ''
  192.     Const ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED = (INTERNET_ERROR_BASE + 44) ''
  193.     Const ERROR_INTERNET_SECURE_FAILURE          = (INTERNET_ERROR_BASE + 175) ''
  194.     Const ERROR_INTERNET_RESPONSE_DRAIN_OVERFLOW = (INTERNET_ERROR_BASE + 184) ''
  195.     Const ERROR_INVALID_PARAMETER                = 87                         ''
  196.     Const ERROR_NOT_ENOUGH_MEMORY                = 8                          ''
  197.     Const ERROR_INSUFFICIENT_BUFFER              = 122
  198. 'Constantes HTTP

Archivo APIS.cml <- Se recomienda que tengan un archivo propio de APIS (y que sea global), donde puedan poner todas las APIS que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * APIS para el HTTP Request
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: APIS.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'APIS HTTP'
  12.     API InternetOpen(sAgent:Cadena, lAccessType:Entero, sProxyName:Cadena, sProxyBypass:Cadena, lFlags:Entero):Entero, "wininet.dll" "InternetOpenA"
  13.     API InternetConnect(hInternetSession:Entero, sServerName:Cadena, nServerPort:Entero, sUsername:Cadena, sPassword:Cadena, lService:Entero, lFlags:Entero, lContext:Entero):Entero, "wininet.dll" "InternetConnectA"
  14.     API InternetCloseHandle(hInet:Entero):Entero, "wininet.dll"
  15.     API InternetQueryDataAvailable(hHttpRequest:Entero, lNumberOfBytesAvailable:Entero, lFlags:Entero, lContext:Entero):Entero, "wininet.dll"
  16.     API InternetReadFile(hFile:Entero, sBuffer:Entero, lNumBytesToRead:Entero, lNumberOfBytesRead:Entero):Entero, "wininet.dll"
  17.     API InternetQueryOption(hHttpRequest:Entero, dwOption:Entero, lpBuffer:Entero, dwBufferLength:Entero):Entero, "wininet.dll" "InternetQueryOptionA"
  18.     API InternetSetOption(hHttpRequest:Entero, dwOption:Entero, lpBuffer:Entero, dwBufferLength:Entero):Entero, "wininet.dll" "InternetSetOptionA"
  19.     API HttpOpenRequest(hHttpSession:Entero, sVerb:Cadena, sObjectName:Cadena, sVersion:Cadena, sReferer:Cadena, sAcceptTypes:Cadena, lFlags:Entero, lContext:Entero):Entero, "wininet.dll" "HttpOpenRequestA"
  20.     API HttpAddRequestHeaders(hHttpRequest:Entero, sHeaders:Cadena, lHeadersLength:Entero, lModifiers:Entero):Entero, "wininet.dll" "HttpAddRequestHeadersA"
  21.     API HttpSendRequest(hHttpRequest:Entero, sHeaders:Cadena, lHeadersLength:Entero, sOptional:Cadena, lOptionalLength:Entero):Entero, "wininet.dll" "HttpSendRequestA"
  22.     API HttpQueryInfo(hHttpRequest:Entero, lInfoLevel:Entero, lBuffer:Entero, lBufferLength:Entero, lIndex:Entero), "wininet.dll" "HttpQueryInfoA"
  23.     API HttpEndRequest(hHttpRequest:Entero, lpBuffersOut:Entero, dwFlags:Entero, dwContext:Entero):Entero, "wininet.dll" "HttpEndRequestA"
  24. 'APIS HTTP'

Y aquí un ejemplo usando HTTPRequest.cml
Código: Text
  1. Importar "Cramel.cml"
  2. Importar "MSVBVM60\MSVBVM60.cml"
  3. Importar "Constantes.cml"
  4. Importar "APIS.cml"
  5. Importar "HTTPRequest.cml"
  6.  
  7. Var request:HTTP
  8. Var text:Cadena
  9.  
  10. Crear request
  11.     request.Metodo = "POST"
  12.     request.Parametros = "test=Hola"
  13.     request.Puerto = INTERNET_DEFAULT_HTTP_PORT
  14.     request.Servidor = "localhost"
  15.     request.Dirección = "/index.php"
  16.     request.Agente = "CramelRequest [POST]"
  17.  
  18.     Si ( request.Conectar ) Entonces
  19.         Si ( request.Enviar ) Entonces
  20.             text = request.LeerRespuesta
  21.             Si ( request.StatusCode = HTTP_STATUS_NOT_FOUND ) Entonces
  22.                 Mensaje("La dirección es incorrecta")
  23.             SiNo
  24.                 Mensaje(EntCad(request.StatusCode) + CRLF + request.StatusText + CRLF + "Tamaño de respuesta: " + EntCad(request.TamañoPagina) + CRLF + text)
  25.             FinSi
  26.         SiNo
  27.             Mensaje(request.Error)
  28.         FinSi
  29.     SiNo
  30.         Mensaje(request.Error)
  31.     FinSi
  32.  
  33. Destruir request




Gracias a @Yuki - Por su antigua librería de HTTP de la cual solo me toco portar a Cramel.

Cualquier sugerencia, o error, comenten.
« Última modificación: Junio 26, 2017, 01:05:59 am por BlackBlex »

Desconectado 79137913

« Respuesta #1 en: Junio 26, 2017, 08:57:25 am »
HOLA!!!

Gran Aporte @Yuki podria ponerla como libreria precargada en la prox version!

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                   DOORS.PARTY

Desconectado Yuki

  • *
  • Underc0der
  • Mensajes: 67
  • Actividad:
    0%
  • Reputación 5
    • Ver Perfil
« Respuesta #2 en: Junio 26, 2017, 06:01:28 pm »
HOLA!!!

Gran Aporte @Yuki podria ponerla como libreria precargada en la prox version!

GRACIAS POR LEER!!!

Si, cuando la vi me puse manos a la obra, la modifique un poco y la documente. Solo falta que yo suba la nueva versión  :D

 

¿Te gustó el post? COMPARTILO!



Tips a la hora de aprender a programar [Post Colaborativo]

Iniciado por Jimeno

Respuestas: 1
Vistas: 2820
Último mensaje Abril 16, 2013, 07:51:09 pm
por k0ws
Como trabajar Cramel con Sublime Text | Actualizado [Cramel2| 20/Junio/17]

Iniciado por BlackBlex

Respuestas: 1
Vistas: 2173
Último mensaje Febrero 23, 2017, 08:18:21 am
por ANTRAX
[Cramel] Brute Force Dictionary Creator by 79137913 [Aplicación + Source]

Iniciado por BlackBlex

Respuestas: 0
Vistas: 3594
Último mensaje Julio 01, 2017, 07:04:10 pm
por BlackBlex
[Cramel] Regedit.cml ~ Crea, Edita y Elimina claves del Registro

Iniciado por BlackBlex

Respuestas: 0
Vistas: 3544
Último mensaje Julio 05, 2017, 08:30:39 pm
por BlackBlex
[Cramel] File pumper + (Source) | Agrega peso a tus archivos

Iniciado por BlackBlex

Respuestas: 8
Vistas: 5375
Último mensaje Marzo 23, 2017, 07:58:04 pm
por Riojas