post icon

Crear Web Service con autenticación básica [SOAPHeader] desde .Net y consumirlo con PHP

Primeramente vamos a crear un servicio web servidor con C#, agregando validación básica a traves de la cabecera del SOAP. Luego lo consumiremos con un cliente hecho en C# y otro en PHP.

El método del servicio sería como sigue

[WebService(Namespace = "http://devtroceuri.com.py/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]

public class wsDevtroce : System.Web.Services.WebService
{
	public class AuthHeader : SoapHeader
	 {
	 public string Username { set; get; }
	 public string Password { set; get; }
	 }

	public AuthHeader Authentication;

	[SoapHeader("Authentication")]
	[WebMethod]
	public string AutenticacionBasica()
	{
		if (Authentication.Username == "devtroce") &&
			Authentication.Password == "*********")
			return "Autenticado";
		return "Parametros invalidos"
	}
}

El ejemplo es bastante escueto y simple, pero sirve para dar idea sobre como crearlo. Ahora veamos dos clientes en distintos lenguajes, primeramente lo consumiremos con C#.

try
{
	AuthHeader auth = new AuthHeader();
	auth.Username = "devtroce";
	auth.Password = "*********";
	wsDevtroce ws = new wsDevtroce();
	ws.AuthHeaderValue = auth;
	txtResult.Text =  ws.AutenticacionBasica();
}
catch (Exception ex)
{
	MessageBox.Show(ex.Message);
}

El equivalente en PHP

<?php

$soap_client = new SoapClient("http://localhost:33129/wsDevtroce.asmx?wsdl");

$Uid='devtroce';
$Pwd='*********';
$ns = "http://devtroceuri.com.py/";

// cuerpo de la cabecera
$headerbody = array('Username' => $Uid,
                'Password' => $Pwd
                );

// creamos la cabecera
$header = new SOAPHeader($ns, 'AuthHeader', $headerbody);

// establecemos los parametros del header
$soap_client->__setSoapHeaders($header);
$par=""; // disponible por si lo necesitan para el WS vuestros
$param=array('xmlString'=>$par);

try {
	$result=$soap_client->__SoapCall('AutenticacionBasica', $param);
	print_r ($result);
	echo '<br/>';
	print_r ($result->AutenticacionBasicaResult);
} catch (Exception $e) {
	echo 'Error: ' . $e->getMessage();
}

?>

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder