-
Notifications
You must be signed in to change notification settings - Fork 1
/
service.php
126 lines (112 loc) · 3.72 KB
/
service.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
// conexion base de datos
require_once 'config/Conection.php';
// libreria nusoap
require_once 'lib/nusoap.php';
// respuestas
require_once 'classes/errors/Answers.php';
// evitar XML error parsing SOAP payload on line X: Invalid document end
ini_set('display_errors', 0);
//! instanciar un nuevo objeto soap_server
$server = new soap_server();
// namespace
$ns = 'http://localhost/Projects/NUSOAP/service.php';
//! configurar servicio
// configureWSDL(nombreWebService, namespace)
$server->configureWSDL('consulta', $ns);
// almacena el espacio de nombre destino
$server->schemaTargetNamespace = $ns;
// decodificar caracteres mensaje saliente
$server->soap_defencoding = 'utf-8';
$client->encode_utf8 = false;
$client->decode_utf8 = false;
//! registrar la funcion que va a utilizar nuestro servicio
// register(nombreFuncion, parametrosEntrada, queRetorno, namespace)
// parametrosEntrada = indicar que tipo de dato es
// array(nombreParametro => tipoDato)
// xsd = define la estructura de un documento XML
$server->register(
'listarCursos',
array('codigo' => 'xsd:string'),
array('return' => 'xsd:string'),
$ns
);
$server->register(
'getCurso',
array('codigo' => 'xsd:string'),
array('return' => 'xsd:string'),
$ns
);
//! funcion listar cursos
function listarCursos()
{
//! conectar la bd
$conn = Conection::conectar();
//! consulta sql
$sql = "SELECT nombre FROM cursos";
//! guardar la consulta en memoria para ser analizada
$stmt = $conn->prepare($sql);
//! ejecutar consulta
if ($stmt->execute()) {
// traer el curso en un array asociativo
$cursos = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
// error 500 interno del servidor
return Answers::mensaje('500', 'Error interno del servidor');
}
//! crear estructura xml y devolverla
return cadenaXML($cursos);
}
//! funcion listar curso por id
function getCurso($id)
{
//! conectar la bd
$conn = Conection::conectar();
//! consulta sql
$sql = "SELECT nombre FROM cursos WHERE id = :id";
//! guardar la consulta en memoria para ser analizada
$stmt = $conn->prepare($sql);
//! bindear parametros
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
//! ejecutar consulta
if ($stmt->execute()) {
// traer el curso en un array asociativo
$cursos = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
// error 500 interno del servidor
return Answers::mensaje('500', 'Error interno del servidor');
}
//! crear estructura xml y devolverla
return cadenaXML($cursos);
}
//! armar cadena XML
function cadenaXML($cursos)
{
//! crear estructura xml
$cadena = "<?xml version?'1.0' encoding='utf-8'?>";
$cadena .= '<cursos>';
// si hay cursos
if (count($cursos) > 0) {
// recorrer resultados
foreach ($cursos as $curso => $value) {
$cadena .= '<curso>';
$cadena .= '<br>';
$cadena .= '<nombre>' . $value['nombre'] . '</nombre>';
$cadena .= '<br>';
$cadena .= '</curso>';
}
} else {
$cadena .= '<error>No hay cursos</error>';
}
$cadena .= '</cursos>';
// devolver respuesta
return $cadena;
}
//! valida lo que ingresa por post
// operador ternario -> (condicion) ? verdadero : falso
// $HTTP_RAW_POST_DATA = fue deprecated en PHP 7
// se reemplaza por ejemplor -> $postdata = file_get_contents("php://input");
// $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$peticion = file_get_contents("php://input");
//! ejecutar servicio segun lo que se envia
$server->service($peticion);