Execução de serviço externo
Qualquer sistema que deseja consumir um WebService que está sendo disponibilizado através do serviço externo, basta seguir as orientações abaixo:
Os serviços externos devem ser configurado por um administrador do sistema no MentorWeb, seguindo as orientações conforme descrito na parte de cadastro de serviço externo.
Fluxo
Segurança
Para realizar a execução do serviço externo é necessário possuir um token de integração esse token é gerado a partir da chamada de outro webservice, conforme exemplo abaixo:
- Geração do token da Edusoft:
- Realizar requisição GET passando no cabeçalho (header) o usuário e senha (informadas no cadastro do serviço externo) para o endereço:
http:/ / dominio / MentorWebG5 /rest/servicoexterno/ token / nomeServico
Http: Se no cadastro obriga HTTPS, deve-se utilizar Https.
Domínio: Domínio da aplicação
MentorWebG5: nome do sistema MentorWebG5 da aplicação.
Token: representa que este link é para geração do Token
nomeServico: nome do serviço definido no cadastro de serviço externo
Este token possui validade de 30 segundos e só pode ser utilizado uma vez, e é exclusivo para este nome de serviço.
Ex: Solicitação de token para o serviço de disciplinas matriculadas em php e java
Exemplo em PHP
$request = new HttpRequest(); $request->setUrl('http://dominio/MentorWebG5/rest/servicoexterno/token/disciplinaMatriculada'); $request->setMethod(HTTP_METH_GET); $request->setHeaders(array( 'senha' => '1', 'usuario' => 'edu' )); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; }
Exemplo em Java
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://dominio/MentorWebG5/rest/servicoexterno/token/disciplinaMatriculada") .get() .addHeader("usuario", "edu") .addHeader("senha", "1") .build(); Response response = client.newCall(request).execute();
O retorno da requisição para o token será sempre uma “string” com o valor do token.
- Executando o serviço externo:
- Realizar requisição POST passado no cabeçalho o token adquirido no passo anterior e no corpo(body) os parâmetros cadastrados no serviço no formato json. O endereço a ser chamado:
http:/ / dominio / MentorWebG5 /rest/servicoexterno/ execute / nomeServico
Http: Se no cadastro obriga HTTPS, deve-se utilizar Https.
Domínio: Domínio da aplicação
MentorWebG5: nome do sistema MentorWebG5 da aplicação.
Execute: representa que este link é para executar o serviço.
nomeServico: nome do serviço definido no cadastro de serviço externo
Ex: Solicitação do serviço de disciplinas matriculadas em php e java
Exemplo em PHP:
$request = new HttpRequest(); $request->setUrl('http://dominio/MentorWebG5/rest/servicoexterno/execute/disciplinaMatriculada'); $request->setMethod(HTTP_METH_POST); $request->setHeaders(array( 'token' => '0505d673d084e1fb7ebc6b2e109f698ba09269f5', 'content-type' => 'application/json' )); $request->setBody('{"ingressoId":99,"periodoLetivoId":1}'); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; }
Exemplo em Java:
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"ingressoId\":99,\"periodoLetivoId\":1}"); Request request = new Request.Builder() .url("http://dominio/MentorWeb/rest/servicoexterno/execute/disciplinaMatriculada") .post(body) .addHeader("content-type", "application/json") .addHeader("token", "0505d673d084e1fb7ebc6b2e109f698ba09269f5") .build(); Response response = client.newCall(request).execute();
Observação: Toda requisição ao serviço externo gera log com informações do usuário, data/hora, ip e parâmetros.
O retorno do serviço, sempre será em formato “json”. Ele varia conforme cada serviço. Mas, todos os serviços tem como retorno o campo “Resultado”. Este campo, pode estar dentro de uma coleção ou não. Isso é específico de cada serviço.
Abaixo um exemplo de retorno com sucesso (dentro de uma coleção):
Abaixo um exemplo de retorno com erro (fora de uma coleção):