Newsgroup: it.comp.www.php
Titolo: SOAP e HEADER per autenticazione Web Service

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

eugenio ha scritto:

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);
?>

eugenio ha scritto:

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

 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

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

A questo c'ero arrivato.. ï¿œ solo che volevo farlo passando i parametri 
nell'header
Ciao
Eugenio
michelangelo giacomelli ha scritto:
