Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Webservices y PHP

Estas en el tema de Webservices y PHP en el foro de SQL Server en Foros del Web. Hola, tengo una base de datos en SQL Server 2008 a la que quiero acceder desde un programa en PHP que corre en un servidor ...
  #1 (permalink)  
Antiguo 06/04/2011, 11:08
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Webservices y PHP

Hola,
tengo una base de datos en SQL Server 2008 a la que quiero acceder desde un programa en PHP que corre en un servidor Linux. Por razones de seguridad decidimos que convenía hacer un Webservice en el servidor SQLserver.

Siguiendo tutoriales, primero hice un SP y luego un ENDPOINT, los que transcribo

el SP es
------------------------------------------------------------------
USE [basededatos]
GO

/****** Object: StoredProcedure [dbo].[c_cons_int] Script Date: 04/06/2011 13:56:17 ******/

[...]

CREATE PROCEDURE [dbo].[c_cons_int]

<Default_Value_For_Param2, , 0>
AS
BEGIN

SELECT nro_internet from int_internet
where nro_internet=4377 OR nro_internet=4378

END
-------------------------------------------------------
o sea, un simple SELECT sin parámetros

Ahora el ENDPOINT

-----------------------------------------------------

CREATE ENDPOINT [DatosInternet]
AUTHORIZATION [sa]
STATE=STARTED

AS HTTP (
PATH=N'/internet',
PORTS = (CLEAR),
AUTHENTICATION = (NTLM, KERBEROS, INTEGRATED),
SITE=N'192.168.2.2',
CLEAR_PORT = 80,
COMPRESSION=DISABLED)

FOR SOAP (
WEBMETHOD 'Datos'(
NAME=N'[basededatos].[dbo].[c_cons_int]'
, SCHEMA=STANDARD
, FORMAT=ALL_RESULTS
),
BATCHES=DISABLED,
WSDL=N'[master].[sys].[sp_http_generate_wsdl_defaultcomplexorsimple]',
SESSIONS=DISABLED,
SESSION_TIMEOUT=60,
DATABASE=N'basededatos',
NAMESPACE=N'HTTP://192.168.2.2/',
SCHEMA=STANDARD,
CHARACTER_SET=XML)

------------------------------------

Por último, el PHP resumido empleado para acceder (tuve que ingresar algunas librerías para poder usar NTLM, pero el resultado era el mismo con SSL y autenticación DIGEST)

<?php

$client=new SoapClient("http://192.168.2.2internet?wsdl",array('login'=>"user",'p assword'=>"pass",'

echo "<pre>";
print_r($client->Datos());
echo "</pre>";

?>

Obtengo respuesta, sí. ¿Cuál es el problema? que la respuesta es esta:

stdClass Object
(
[DatosResult] => stdClass Object
(
[SqlRowSet] => stdClass Object
(
[schema] => Array
(
[0] =>
[1] =>
)

[any] => 4377 4378
)

[SqlRowCount] => stdClass Object
(
[Count] => 2
)

[SqlResultCode] => 0
)

)


Es decir, que los datos vienen como un único string en [any] y así no me sirve.
He probado variantes como ponerle en el SP "FOR XML AUTO, ELEMENTS" pero deja de funcionar.

Posteo en este foro porque estoy segura de que el problema es la generación del WSDL

Alguna idea?

Gracias

?>

Etiquetas: php, webservice
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:39.