PUSH WEB SERVER HTTP GATEWAY. Versión 1.0

Documentos relacionados
Integración REST Text2Speech

Integración HTTP REST. Versión 2.0

Pasarela para envíos de faxes a través de interfaz HTTPS

MANUAL DE INTEGRACIÓN PAGOS EN EFECTIVO

ANEXO II: ARCHIVOS CREADOS PARA IMPLEMENTAR LA WEB API EN EL SERVIDOR

factesol Documentation

Pasarela para envíos de faxes a través de interfaz HTTPS

Web Service OSR REST: Guía de Consumo Web Service

Java Servlets. Qué es un programa? Luis Fernando Llana Díaz. 22 de abril de input Programa output. En pascal:

Integración Web Services SOAP Gateway

Slack, WordPress y un poco más. Eric Zeidan

OneAPI Interface Ref Push SMS. 13 de mayo de 2016 v1.1

GOBIERNO DEL PRINCIPADO DE ASTURIAS VICECONSEJERÍA DE PRESUPUESTOS Y ADMINISTRACIÓN PÚBLICA

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

TELKIA. Especificación, SMSBROKER HTTP Protocol TELKIA. Versión: 2.5 Fecha: Page 1

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Integración HTTP GET. Versión 2.0

Programación multimedia y dispositivos móviles. Android y JSON

Arquitecturas cliente/servidor

Entrada y Salida de datos

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Manual del Protocolo XML RPC Mensajería Negocios

WEB SERVICES. Manual técnico para desarrollador

MANUAL TECNICO API SMS-HTTP

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

API Mensajería Negocios. v3.0

WEB SERVICES TUTORIAL. Tutorial completo para poder crear y utilizar Web Services con las configuraciones más usadas de forma profesional.

República Argentina - Poder Ejecutivo Nacional Año de las Energías Renovables. Anexo

QeQ Web Service RESTful XML Manual de Consumo V2.8

URLs en Java. Contenido. La clase URL Acceso al contenido de una URL La clase URLEncoder La clase URLConnection

Registro de Procedimientos Administrativos Manual de integración RPA-WS

Registro de Procedimientos Administrativos Manual de Integración

Contexto... 3 Plataforma... 3 Enviar SMS... 4 Parámetros de entrada:...4 Respuesta:...4 Ejemplo de uso:...4

Integración Web Services REST Gateway

. Recibir devoluciones de llamada HTTP para la notificación de entrega (recibos) cuando se recibe SMS-MT (o no) en la estación móvil.

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

RECEPCIÓN DE MENSAJES POR SERVICIO WEB

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Aplicaciones Cliente-Servidor Con Datagramas

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2)

Experto Universitario Java Enterprise Spring

Documentación Técnica

Documentación de la API clickline.com

PROTOCOLOS DE RED (Parte 2) HTTP

Manual del Protocolo XML-RPC de Mensajería Negocios

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a

Capítulo 5. Programación de aplicaciones de red

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Tutorial de incorporación del driver JDBC a Eclipse. Programación en Internet

Servicios pensados para optimizar los procesos de comunicación de voz y SMS.

StringBuffer, Math y Wrapper

a) Reescribir P1 introduciendo un error sintáctico (de compilación), otro de ejecución, y

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

MDIrector - APIs de Integración

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Examen Teórico. Convocatoria de Febrero de 2018

Tema 4. Excepciones en Java

Fundamentos de Computadores y Lenguajes

PROTOCOLO DE CONEXIÓN A REPOSITORIO DE FIRMAS DOCUMENTACIÓN TÉCNICA INTEGRACIÓN API REPOSITORIO CENTRALIZADO DE FIRMAS VERSIÓN 7

Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense de Madrid.

SOBREESCRIBIR MÉTODOS EN JAVA: TOSTRING, EQUALS. EJEMPLOS Y EJERCICIOS RESUELTOS. COMPARAR OBJETOS. (CU00694B)

Tabla: producto Campo: codigo varchar(13) Campo: nombre varchar(40) Campo: precio int Campo: unidades int PRIMARY KEY: codigo

Especificaciones del driver JDBC

Red LSUB. 4 de marzo de 2015 GSYC

Conceptos básicos de Orientación a Objetos, manejo con Eclipse.

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Introducción a Java LSUB. 30 de enero de 2013 GSYC

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Parte I: Programación en un lenguaje orientado a objetos

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

Aplicaciones Web con Servlets y JSP (I)

Objeto petición. Introducción. Mensajes de petición. Copyright 2016 Node Academy. Reservados todos los derechos. Objeto petición 1

Servicios web de distribución digital (DDWS) GetPartnerDesignation - Manual de servicio

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Massiv REST sin plantilla: Guía de consumo Web Service

Esta aplicación se compone de 3 programas o clases, según el siguiente esquema: SueldoMedio.java. Sueldo.java

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Guía técnica Web Service recepción de archivos CUSCAR - Manifiestos. Gerencia de Informática Intendencia de Aduanas Versión 4.0

Massiv REST con plantilla: Guía de consumo Web Service

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I:

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Arquitecturas cliente/servidor

Lenguaje Java Avanzado

Manual Programador

// Comprobamos que la ejecución por línea de comandos es correcta; // si no es así, se indica la forma correcta.

Transcripción:

PUSH WEB SERVER HTTP GATEWAY Versión 1.0

Índice Introducción 2 Plataforma técnica 2 Petición de creación de campaña PUSH WEB 3 URL 3 Método 3 Parámetros 3 Obligatorios 3 name (string) 3 type (string) 3 groups (array) 3 webs (array) 3 notification (object) 4 Opcionales 4 schedule (object) 4 date (string) 4 timezone (string) 4 batch (object) 4 parts (integer) 4 minutes (integer) 4 tags (array de strings) 4 Ejemplo de petición PHP 5 Ejemplo de petición PYTHON 6 Ejemplo de petición JAVA 7 Ejemplo de petición C# 8 Respuestas 10 201 Petición correcta. Campaña creada. 10 422 Error en los parámetros. 10 400 Error al crear la campaña. 10 1

Introducción La plataforma http server permite al usuario crear una campaña de envío de mensajes web PUSH app a través de esta plataforma. Para poder acceder a sus estadísticas y datos de facturación puede acceder a la web https://www.360nrs.com con sus datos de usuario. La comunicación entre el cliente no se realizará a través de ninguna API proporcionado por la Empresa, sino que simplemente se realizará una comunicación HTTP, con algunos parámetros a la URL indicada. Este proceso se detalla a continuación. Plataforma técnica Cada petición que se realice tendrá que incluir en la cabecera de la petición http la autenticación del cliente. Para ello se utiliza la autenticación de acceso básica de HTTP. La cabecera de autorización se construye combinando la cadena usuario: contraseña y codificándola en base64. A esta cadena se antepone la cadena Authorization: Basic Por ejemplo, para el usuario miuser y el password mipass la cabecera resultante sería: Authorization: Basic bwl1c2vyom1pcgfzcw== A continuación se especifican las opciones de envío disponibles, la URL a la que se debe llamar, y los parámetros que admite. 2

Petición de creación de campaña PUSH WEB URL https://dashboard.360nrs.com/api/rest/web-push Método POST Parámetros Obligatorios name (string) Nombre de campaña type (string) Tipo de la campaña. Opciones: basic groups (array) Identificadores de los grupos de contactos de la plataforma 360nrs a los que se quiere enviar la campaña PUSH app. webs (array) Identificadores de las webs que tenemos dadas de alta en la plataforma 360nrs a las que se les quiere enviar las campaña PUSH app. 3

notification (object) Datos de composición del mensaje PUSH para los distintos. Obligatorios: title (string) (máximo 30 caracteres) text (string) (máximo 100 caracteres) url (string) Opcionales: icon (string) image (string) Opcionales schedule (object) Objeto con la programación del envío en una fecha futura: date (string) Fecha de envío con el formato YYYY-mm-dd HH:ii:ss (MySQL). timezone (string) Zona horaria que se desea tener en cuenta para la hora del envío. E.g. Europe/Madrid. batch (object) Objeto con la configuración de en cuantas partes de quiere partir el envío y cada cuantos minutos se quiere enviar. parts (integer) Número de partes en las que se quiere dividir el envío. minutes (integer) Cada cuantos minutos, a partir de la fecha de inicio, se desea enviar las partes del envío. tags (array de strings) Array de tags que se quieran aplicar a la campaña. E.g. [ blackfriday, rebajas ] 4

Ejemplo de petición PHP <?php $post [ "name" ] = "Nombre Campaña" ; $post [ "type" ] = "basic" ; $post [ "groups" ] = [ 2365 ]; $post [ "webs" ] = [ 356 ]; $post [ "notification" ] = [ "title" => "titulo", "text" => "subtítulo", "url" => "https://www.android.com", "icon" => "https://dashboard.360nrs.com/assets/img/logo.png", "image" => "https://www.w3schools.com/w3css/img_lights.jpg" ]; $user = "miuser" ; $password = "mipass" ; try $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, "https://dashboard.360nrs.com/api/rest/web-push" ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 0 ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, json_encode ( $post )); curl_setopt ( $ch, CURLOPT_HTTPHEADER, array ( "Accept: application/json", "Content-type: application/json", "Authorization: Basic ". base64_encode ( $user. ":". $password ))); $result = curl_exec ( $ch ); var_dump ( $result ); catch ( Exception $exc ) echo $exc -> gettraceasstring (); 5

Ejemplo de petición PYTHON import pycurl import base64 import json if name == " main " : url = "https://dashboard.360nrs.com/api/rest/web-push" usrpass = "miuser:mipass" data = json. dumps ( "name" : "Nombre Campaña", "type" : "basic", "groups" :[ 2365 ], "webs" :[ 356 ], "notification" : "title" : "título", "text" : "subtítulo", "url" : "https://www.android.com", "icon" : "https://dashboard.360nrs.com/assets/img/logo.png", "image" : "https://www.w3schools.com/w3css/img_lights.jpg" ) b64val = base64. b64encode ( usrpass ) headers =[ "Content-type: application/json", "Authorization:Basic %s" % b64val ] c = pycurl. Curl () c. setopt ( pycurl. URL, url ) c. setopt ( pycurl. HTTPHEADER, headers ) c. setopt ( pycurl. POST, 1 ) c. setopt ( pycurl. POSTFIELDS, data ) c. setopt ( pycurl. SSL_VERIFYHOST, 0 ) c. setopt ( pycurl. SSL_VERIFYPEER, 0 ) c. perform () http_code = c. getinfo ( pycurl. HTTP_CODE ) print ( http_code ) 6

Ejemplo de petición JAVA import java. io. BufferedReader ; import java. io. DataOutputStream ; import java. io. IOException ; import java. io. InputStreamReader ; import java. net. URL ; import javax. net. ssl. HttpsURLConnection ; import org. json. simple. JSONArray ; import org. json. simple. JSONObject ; public class ApiPushWeb public static void main ( String args []) throws IOException String url = "https://dashboard.360nrs.com/api/rest/web-push" ; URL obj = new URL ( url ); HttpsURLConnection con = ( HttpsURLConnection ) obj. openconnection (); con. setrequestmethod ( "POST" ); String userpass = "miuser" + ":" + "mipass" ; String basicauth = "Basic " + javax. xml. bind. DatatypeConverter. printbase64binary ( userpass. getbytes ( "UTF-8" )); con. setrequestproperty ( "Authorization", basicauth ); con. setrequestproperty ( "Content-type", "application/json" ); JSONObject data = new JSONObject (); JSONArray groups = new JSONArray (); JSONArray webs = new JSONArray (); JSONObject notification = new JSONObject (); data. put ( "name", "Nombre Campaña" ); data. put ( "type", "basic" ); groups. add ( 2365 ); data. put ( "groups", groups ); webs. add ( 356 ); data. put ( "webs", webs ); notification. put ( "title", "título" ); notification. put ( "text", "subtítulo" ); notification. put ( "url", "https://www.android.com" ); notification. put ( "icon", "https://www.w3schools.com/w3css/img_lights.jpg" ); notification. put ( "image", "https://www.w3schools.com/w3css/img_lights.jpg" ); 7

data. put ( "notification", notification ); String jsontext = data. tojsonstring (); con. setdooutput ( true ); DataOutputStream wr = new DataOutputStream ( con. getoutputstream ()); wr. writebytes ( jsontext ); wr. flush (); wr. close (); BufferedReader in = new BufferedReader ( new InputStreamReader ( con. getinputstream ())); String inputline ; StringBuffer response = new StringBuffer (); while (( inputline = in. readline ())!= null ) response. append ( inputline ); in. close (); System. out. println ( response. tostring ()); Ejemplo de petición C# using Newtonsoft. Json ; using System ; using System. IO ; using System. Net ; namespace nrs_api class Program static void Main ( string [] args ) var httpwebrequest = ( HttpWebRequest ) WebRequest. Create ( "https://dashboard.360nrs.com/api/rest/webpush" ); httpwebrequest. Method = "POST" ; httpwebrequest. ContentType = "application/json" ; String username = "miuser" ; String password = "mipass" ; 8

String encoded = System. Convert. ToBase64String ( System. Text. Encoding. GetEncoding ( "ISO-8859-1" ). GetBytes ( username + ":" + password )); httpwebrequest. Headers. Add ( "Authorization", "Basic " + encoded ); using ( var streamwriter = new StreamWriter ( httpwebrequest. GetRequestStream ())) var name = "Nombre Campaña" ; var type = "basic" ; string [] groups = new string [ 1 ]; groups [ 0 ] = "2365" ; string [] webs = new string [ 1 ]; webs [ 0 ] = "356" ; var notification = new title = "título", text = "subtítulo", url = "https://www.android.com", icon = "https://dashboard.360nrs.com/assets/img/logo.png", image = "https://www.w3schools.com/w3css/img_lights.jpg", ; var data = new name = name, type = type, groups = groups, webs = webs, notification = notification ; string json = JsonConvert. SerializeObject ( data ); streamwriter. Write ( json ); streamwriter. Flush (); streamwriter. Close (); var httpresponse = ( HttpWebResponse ) httpwebrequest. GetResponse (); 9

using ( var streamreader = new StreamReader ( httpresponse. GetResponseStream ())) var result = streamreader. ReadToEnd (); Console. WriteLine ( result ); Console. ReadKey (); Respuestas 201 Petición correcta. Campaña creada. 422 Error en los parámetros. Se especificará qué parámetro o parámetros han fallado en la respuesta. 400 Error al crear la campaña. 10