PUSH WEB SERVER HTTP GATEWAY. Versão 1.0

Documentos relacionados
Integração REST Text2Speech Versão 1.1

Integração HTTP REST. Versão 2.0

Integração Web Services REST Gateway

MANUAL DE INTEGRAÇÃO API DE PAGAMENTOS PRIXPAY v.003

Integração Web Services SOAP Gateway

Multi IO V3. Manual do protocolo HTTP

Coletando dados utilizando a API do Zabbix com PHP e JSON

Manual Direct100 API V2 RICCARDO BARANA

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Torneio Estudantil de Computação Multi-Linguagem de Aveiro. Escola Superior de Tecnologia e Gestão de Águeda Universidade de Aveiro TECLA 2009

CETEC Centro Paula Souza

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

1 handshake 2 consulta 3 alterausuario

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

Módulo 13. Socket. Programação Orientada a Objetos Java (Rone Ilídio)

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Tratamento de Erro e Javadoc. Professor: Norton T. Roman

API. Lista de métodos da API do Funil de Vendas. Criação de Atividade. POST /v2/activities. Authorization: Basic { ACTIVITY } Exemplo:

Manual de uso da API de Avaliação e Acompanhamento. servicos.gov.br

NRS-GROUP Av. Paulista nº º Andar Sala 74 São Paulo (Brasil) Telefone

API DE INTEGRAÇÃO VERSÃO 2. Janeiro/2017. Manual de Integração. Setor de Desenvolvimento

Classe PHP Client. A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP.

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES. Documentação do Web Service Versão 1.3

Guia de Integração de Serviço Público Digital

Tratamento de Exceções

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Principais APIs de Suporte à Linguagem Java: Visão Geral

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Integração HTTP GET. Versão 2.0

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Linguagem de Programação II Implementação

Reproduzir sons em Java. import java.net.url; import javax.swing.*; import javax.sound.sampled.*; public class ReproduzSons {

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Introdução. Documento revisão 2.1

Entrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05

Java para WEB com Struts 2 e Hibernate

Base de Dados de Veículos BDV. Documentação do Web Service Versão 1.3

API Documentation. Release Igor Morse

Manual de implementação da API SISeCommerce V Manual de implementação da API SISeCommerce V /21

JavaScript Fundamental e Servlet Fundamental

Registro Nacional de Carteira de Habilitação RENACH. Manual do Produto. Versão 2.1

Programação de Computadores II TCC /Turma A 1

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC:

Introdução à programação competitiva. Professor Tomás O. Junco Vázquez

Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES. Manual do Produto Versão 2.2

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Aplicação Web Zend Framework 2 Cliente de Aplicação Asp.Net Web API

Consultar Dados de Conta

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Entrada e Saída de dados por JOptionPane

Aula teórica 11. Tema 11. Repetição. Ciclo while Ciclo do-while Ciclo for

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Programação Na Web. Servlets: Ciclo de Vida. Agenda. Visão geral sobre ciclo de vida. Nascimento de uma Servlet. Execução de uma Servlet

Programação Orientada a Objetos

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile)

Banco de Dados Nacional de Óbitos SINOB. Manual do Produto Versão 3.2

JDBC - Java Data Base Connectivity

SISTEMAS DISTRIBUÍDOS

API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A PLATAFORMA Versão 1.0 Brasília 2017

Mecanismos de Comunicação. Sockets em java (

Histórico de Revisões

Programação de Computadores II

Sistemas Distribuídos

Redes de Computadores

Resumo das Propriedades de UDP e de TCP

Lógica de Programação e Algoritmos

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Aula 7: Servlets (II)

Conexão HTTP em Java ME Aula 7. Marcio Seiji Oyamada

Escrever scripts de PHP com HTML

CONFIGURAÇÃO DA CAIXA DE CORREIO ELETRÓNICO

Interfaces POO. Prof. Marcio Delamaro

PRDS C#.Net Alexandre L. Silva

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Redes de Computadores

Consultar Dados de Transação

Programação para a Internet II PHP Vários. Nuno Miguel Gil Fonseca

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

Redes de Computadores II. Programação com Sockets em Python

Load-Time Structural Reflection in Java

Vetores Unimensionais

Tratamento de Exceções. Prof. Marcelo Roberto Zorzan

REGISTRO DE BOLETO BANCÁRIO BRADESCO. Guia de Integração (Versão /2017)

Familiarização com a ferramenta JavaCC

Objetivo do programa: Implementação de um analisador de Logs do Servidor Web com base nos requisitos da unidade curricular de Estatística.

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

PROGRAMAÇÃO JAVA. Parte 3

Acesso Digital Único da Plataforma de Cidadania Digital (Brasil Cidadão) Roteiro de Integração (SDK)

Dataa revisão. Autor. Descrição. Garcia Rego. on rail Novos agendamento de Delphi. Oliveira. Oliveira. Introdução

Transcrição:

PUSH WEB SERVER HTTP GATEWAY Versão 1.0

Índice Introdução 2 Plataforma técnica 2 Pedido de criação de campanha PUSH WEB 3 URL 3 Método 3 Parâmetros 3 Obrigatórios 3 name (string) 3 type (string) 3 groups (array) 3 webs (array) 3 notification (object) 4 Opcionais 4 schedule (object) 4 date (string) 4 timezone (string) 4 batch (object) 4 parts (integer) 4 minutes (integer) 4 tags (array de strings) 4 Exemplo de pedido PHP 5 Exemplo de pedido PYTHON 6 Exemplo de pedido JAVA 7 Exemplo de pedido C# 8 Respostas 10 201 Pedido correto. Campanha criada. 10 422 Erro nos parâmetros. 10 400 Erro ao criar a campanha. 10 1

Introdução A plataforma http server permite ao utilizador criar uma campanha de envio de mensagens PUSH app através desta plataforma. Para poder aceder às suas estatísticas e dados de faturação pode aceder ao site https://www.360nrs.com com os seus dados de utilizador. A comunicação com o cliente não se realizará por meio de qualquer API fornecida pela empresa, mas será realizada simplesmente uma comunicação HTTP com alguns parâmetros para o URL indicado. Este processo será detalhado a seguir. Plataforma técnica Cada pedido efetuado deverá incluir no respetivo cabeçalho do pedido http a autenticação do cliente. Para isso, usa-se a autenticação de acesso básica de HTTP. O cabeçalho de autorização constrói-se combinando a sequência "utilizador: palavra-passe" e codificando-a em base64. A esta sequência antepõe-se a sequência "Authorization: Basic" Por exemplo, para o utilizador "myuser" e palavra-passe "mypass" o cabeçalho resultante seria: Authorization: Basic bwl1c2vyom1pcgfzcw== Em seguida, especificam-se as opções de envio disponíveis, o URL a que se deve chamar e os parâmetros que admite. 2

Pedido de criação de campanha PUSH WEB URL https://dashboard.360nrs.com/api/rest/web-push Método POST Parâmetros Obrigatórios name (string) Nome da campanha type (string) Tipo de campanha. Opções: basic groups (array) Identificadores dos grupos de contactos da plataforma 360nrs a que se quer enviar a campanha PUSH app. webs (array) Identificadores das webs que temos disponíveis na plataforma 360nrs a que se quer enviar a campanha PUSH app. 3

notification (object) Dados de composição da mensagem PUSH para os diferentes. Obrigatórios: title (string) (máximo 30 caracteres) text (string) (máximo 100 caracteres) url (string) Opcionais: icon (string) image (string) Opcionais schedule (object) Objeto com a programação de envio numa data futura: date (string) Data de envio com o formato YYYY-mm-dd HH:ii:ss (MySQL). timezone (string) Zona horária que se deseja ter em conta para a hora de envio. Por exemplo, "Europa/Madrid". batch (object) Objeto com a configuração de em quantas partes se quer dividir o envio e a cada quantos minutos se quer enviar. parts (integer) Número de partes em que se quer dividir o envio. minutes (integer) A cada quantos minutos, a partir da data de início, se deseja enviar as partes do envio. tags (array de strings) Array de tags que se queiram aplicar à campanha. Por exemplo, [ blackfriday, saldos ] 4

Exemplo de pedido PHP <?php $post["name"] = "Nome da Campanha"; $post["type"] = "basic"; $post["groups"] = [2365]; $post["webs"] = [356]; $post["notification"] = [ "title" => "titulo", "text" => "legenda", "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

Exemplo de pedido PYTHON import base64 import json import pycurl if name == " main ": url = "https://dashboard.360nrs.com/api/rest/web-push" usrpass = "miuser:mipass" data = json.dumps( "name":"nome da Campanha", "type":"basic", "groups":[ 2365 ], "webs":[ 356 ], "notification": "title": "titulo", "text": "legenda", "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

Exemplo de pedido 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", "Nome da Campanha"); data.put("type", "basic"); groups.add(2365); data.put("groups", groups); webs.add(356); data.put("webs", webs); notification.put("title", "titulo"); notification.put("text", "legenda"); 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"); data.put("notification", notification); 7

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"; String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1"). GetBytes(username + ":" + password)); httpwebrequest.headers.add("authorization", "Basic " + encoded); 8

using (var streamwriter = new StreamWriter(httpWebRequest.GetRequestStream())) var name = "Nome da Campanha"; var type = "basic"; string[] groups = new string[1]; groups[0] = "2365"; string[] webs = new string[1]; webs[0] = "356"; var notification = new title = "titulo", text = "legenda", 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(); using (var streamreader = new StreamReader(httpResponse.GetResponseStream())) var result = streamreader.readtoend(); Console.WriteLine(result); Console.ReadKey(); 9

Respostas 201 Pedido correto. Campanha criada. 422 Erro nos parâmetros. Especificar-se-á que parâmetro ou parâmetros falharam na resposta. 400 Erro ao criar a campanha. 10