Skip to content

Commit c5f2d34

Browse files
Melhorias gerais na classe Soap
Add o método getResponseHeader Método consult alterado para doRequest Método doRequest alterado para aceitar string xml como entrada
1 parent 9f1160c commit c5f2d34

2 files changed

Lines changed: 42 additions & 15 deletions

File tree

README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ As palavras-chave "DEVE", "NÃO DEVE", "REQUER", "DEVERIA", "NÃO DEVERIA", "POD
2929
- [x] Formatar XML
3030

3131
## 3 - Requisitos (módulos)
32-
- REQUER Curl
33-
- REQUER Soap
32+
- REQUER ext-curl
33+
- REQUER ext-soap
3434

3535
Obs: Os módulos acima devem está ativos no "php.ini"
3636

@@ -68,35 +68,46 @@ $obj->setURL('http://endereco_do_webservice');
6868
$obj->setRequest($xml);
6969
$obj->run();
7070

71+
//Retorna um array contendo o cabeçalho da resposta
72+
//$obj->getInfo();
73+
7174
if($obj->getResponse()) {
7275
// Perfumaria
7376
echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>';
74-
echo "<pre class='prettyprint' >" . $obj->formatXML() . "</pre>";
77+
echo '<pre class="prettyprint">' . $obj->formatXML() . '</pre>';
7578
}
7679
```
7780

7881
**Utilizando a classe Soap**:
7982
```php
8083
use Crphp\Webservice\Soap;
8184

85+
//No lugar deste array pode ser passada uma string contendo o xml
8286
$args = [
8387
'tag1_exemplo' => 'valor1',
84-
'tag2_exemplo' => 'valor2'
88+
'tag2_exemplo' => 'valor2',
89+
'no_pai' => [
90+
'no_filho' => 'valor1',
91+
]
8592
];
8693

8794
$obj = new Soap;
8895
if($erro = $obj->setWsdl('endereco_do_wsdl')) {
8996
exit($erro);
9097
}
9198

92-
// Retorna os métodos expostos pelo WSDL
99+
// Retorna um array com a lista de serviços contida no WSDL
93100
// $obj->getMethods();
94101

95102
// Se o retorno for null então significa que a consulta não foi realizada
96-
if(!$erro = $obj->consult('nomeServico', $args)) {
103+
if(!$erro = $obj->doRequest('nomeServico', $args)) {
97104
// Perfumaria
98105
echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>';
99106
echo "<pre class='prettyprint' >" . $obj->formatXML($obj->getResponse()) . "</pre>";
107+
108+
// Retorna uma string contendo o cabeçalho da resposta http
109+
// Obs: Só retorna valor se doRequest já tiver sido chamado
110+
// $obj->getHeader();
100111
} else {
101112
echo $erro;
102113
}

src/Soap.php

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
namespace Crphp\Webservice;
1414

15+
use \SoapVar;
1516
use \Exception;
1617
use \SoapClient;
1718
use \DOMDocument;
@@ -21,7 +22,7 @@ class Soap
2122
/**
2223
* Armazena uma instância de SoapClient
2324
*
24-
* @var string
25+
* @var SoapClient
2526
*/
2627
private $client;
2728

@@ -30,7 +31,7 @@ class Soap
3031
*
3132
* @param string $wsdl
3233
* @param array $opcoes
33-
* @return void|string null = sucesso, string = erro
34+
* @return void|string void = sucesso, string = erro
3435
*/
3536
public function setWsdl($wsdl, array $opcoes = null)
3637
{
@@ -55,23 +56,37 @@ public function setWsdl($wsdl, array $opcoes = null)
5556
/**
5657
* Dispara a consulta contra o serviço informado
5758
*
58-
* @param string $servico
59-
* @param array $argumentos
60-
* @return void|string null = sucesso, string = erro
59+
* @param string $servico
60+
* @param string|array $argumentos
61+
* @return void|string null = sucesso, string = erro
6162
*/
62-
public function consult($servico, array $argumentos = null)
63+
public function doRequest($servico, $argumentos)
6364
{
6465
try {
6566
if(!$this->client) {
6667
throw new Exception("Ocorreu um erro ao tentar chamar o serviço <b>{$servico}</b>.");
6768
}
6869

70+
if(is_string($argumentos)) {
71+
$argumentos = [new SoapVar($argumentos, XSD_ANYXML)];
72+
}
73+
6974
$this->client->__soapCall($servico, $argumentos);
7075
} catch (Exception $e) {
7176
return $e->getMessage();
7277
}
7378
}
7479

80+
/**
81+
* Retorna o cabeçalho HTTP da resposta enviada pelo webservice
82+
*
83+
* @return null|string
84+
*/
85+
public function getResponseHeader()
86+
{
87+
return ($this->client) ? $this->client->__getLastResponseHeaders() : null;
88+
}
89+
7590
/**
7691
* Retorna os métodos expostos pelo WSDL
7792
*
@@ -84,14 +99,15 @@ public function getMethods()
8499
$array = explode(' ', substr($metodo, 0, strpos($metodo, '(')));
85100
$metodos[] = end($array);
86101
}
102+
87103
return $metodos;
88104
}
89105
}
90106

91107
/**
92108
* Retorna o XML enviado
93109
*
94-
* @return string|null em caso de sucesso retorna string, para erro retorna null
110+
* @return string|null em caso de sucesso retorna string, para erro retorna null
95111
*/
96112
public function getRequest()
97113
{
@@ -101,7 +117,7 @@ public function getRequest()
101117
/**
102118
* Retorna o XML recebido
103119
*
104-
* @return string|null em caso de sucesso retorna string, para erro retorna null
120+
* @return string|null em caso de sucesso retorna string, para erro retorna null
105121
*/
106122
public function getResponse()
107123
{
@@ -112,7 +128,7 @@ public function getResponse()
112128
* Converte string para o formato XML
113129
*
114130
* @param string $soap
115-
* @return null|string se não tiver dado para transformação retorna null
131+
* @return null|string se não tiver dado para transformação retorna null
116132
*/
117133
public function formatXML($soap)
118134
{

0 commit comments

Comments
 (0)