Discussione:
SOAP e HEADER per autenticazione Web Service
(troppo vecchio per rispondere)
eugenio
2009-10-27 09:29:06 UTC
Permalink
Ciao a tutti,
ho googlato parecchio ma non sono riuscito a trovare nessun esempio
chiaro su comwe realizzare l'autenticazione per un WS utilizzando le
librerie standard di PHP.
Mi date una mano?
Grazie mille
Eugenio
michelangelo giacomelli
2009-10-27 09:51:12 UTC
Permalink
Post by eugenio
Ciao a tutti,
ho googlato parecchio ma non sono riuscito a trovare nessun esempio
chiaro su comwe realizzare l'autenticazione per un WS utilizzando le
librerie standard di PHP.
Mi date una mano?
Grazie mille
Eugenio
Esempio con NUSOAP:
http://sourceforge.net/projects/nusoap/

<?php
require_once('nusoap.php');
$param = array(
'primo_parametro'=>'primo_valore',
'secondo_parametro'=>'secondo valore'
);
$serverpath ='indirizzo_del_web_service_soap';
$namespace='namespace';
$client = new soapclient($serverpath);
$valore_di_ritorno = $client->call(
'procedura_remota',
$param,
$namespace
);
if(isset($fault))
{
print "Error: ". $fault;
}
else
{
print "il valore XYZ è". $param['xyz'];
}
unset($client);
?>
michelangelo giacomelli
2009-10-27 10:18:01 UTC
Permalink
Post by eugenio
Ciao a tutti,
ho googlato parecchio ma non sono riuscito a trovare nessun esempio
chiaro su comwe realizzare l'autenticazione per un WS utilizzando le
librerie standard di PHP.
Mi date una mano?
Grazie mille
Eugenio
Ops a quanto pare il cervello era in modalità php4...
Da php 5 in poi:
<?php
try
{
$servizio = 'http://www.ecubicle.net/gsearch_rss.asmx?WSDL';
$gsearch = new SoapClient($servizio);
$parametri = array(
'searchPage' => '1',
'gQuery' => 'php',
'numOfResults' => '15'
);
$result = $gsearch->GetSearchResults($parametri);
print_r($result);
unset($gsearch);
}
catch (SoapFault $e)
{
print_r($e);
}
?>
praticamente devi solo indicare il servizio e un array coi parametri.
per conoscere tutti i metodi messi a disposizione da un webservice puoi
usare un brutale:
<?php
try
{
$servizio = 'http://www.ecubicle.net/gsearch_rss.asmx?WSDL';
$gsearch = new SoapClient($servizio);
print_r($gsearch->__getFunctions());
unset($gsearch);
}
catch (SoapFault $e)
{
print_r($e);
}
?>
mentre per i parametri devi fare riferimento al wsdl.
comunque li vedi perchè se lo chiami a cazzo di solito nella risposta ci
sono indicazioni tipo ad esempio questo servizio se chiamato con
parametri sbagliati risponde:
Parameter name: input
at System.Text.RegularExpressions.Regex.IsMatch(String input)
at System.Text.RegularExpressions.Regex.IsMatch(String input, String
pattern)
at gsearch_rss.GetSearchResults(String searchPage, String gQuery,
String numOfResults)
--- End of inner exception stack trace ---
[faultcode] => soap:Server
[detail] =>
)
quindi capisci che i parametri sono tre stringhe e pure dai nomi si
capisce cosa fanno.... comunque se un servizio viene offerto come
webservice di solito c'è un minimo di documentazione e non devi fare
brutalità del genere.
al limite puoi andare a leggere il wsdl e cercare qualcosa del tipo:
<s:element minOccurs="0" maxOccurs="1" name="searchPage" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="gQuery" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="numOfResults"
type="s:string" />

scusa per la risposta con nusoap fino alle 11 il cervello è staccato.

Michelangelo
eugenio
2009-10-27 14:19:32 UTC
Permalink
Post by michelangelo giacomelli
Ops a quanto pare il cervello era in modalità php4...
<?php
try
{
$servizio = 'http://www.ecubicle.net/gsearch_rss.asmx?WSDL';
$gsearch = new SoapClient($servizio);
$parametri = array(
'searchPage' => '1',
'gQuery' => 'php',
'numOfResults' => '15'
);
$result = $gsearch->GetSearchResults($parametri);
print_r($result);
unset($gsearch);
}
catch (SoapFault $e)
{
print_r($e);
}
?>
.............
Michelangelo
Ciao, non sono stato chiaro, il problema è lato server, non client.
L'esempio che cercavo era su come effettuare l'autenticazione lato
server. Grazie dell'interessamento
Ciao
michelangelo giacomelli
2009-10-27 15:25:45 UTC
Permalink
Cosa intendi per autenticazione lato server? fatti passare un nome
utente e una password o meglio ancora una key univoca come parametro del
webservice.
Esempio utente xyz con codice univoco 12345678 e poi esponi una api dove
ogni chiamata a come primo parametro la chiave...

micheg
eugenio
2009-10-28 10:19:22 UTC
Permalink
A questo c'ero arrivato.. è solo che volevo farlo passando i parametri
nell'header
Ciao
Eugenio
Post by michelangelo giacomelli
Cosa intendi per autenticazione lato server? fatti passare un nome
utente e una password o meglio ancora una key univoca come parametro del
webservice.
Esempio utente xyz con codice univoco 12345678 e poi esponi una api dove
ogni chiamata a come primo parametro la chiave...
micheg
Loading...