Consumir los conjuntos de datos del servidor SOAP de Microsoft .NET en PHP -- php campo con soap campo con dataset camp Relacionados El problema

Consuming Microsoft .NET SOAP server datasets in PHP


1
vote

problema

Español

He leído todas las preguntas en StackOverflow, así como cada artículo de Google que podría encontrar.

Necesito consumir una API de SOAP que está proporcionando un sistema Microsoft que usa conjuntos de datos.

Tengo hasta el punto en que creo que necesito hacer esto:

  console.log(total)4  

en lugar de usar este enfoque:

  console.log(total)5  

Porque SIMEXML no puede analizar el resultado, ya que carece de los encabezados de la respuesta de SOAP.

Sin embargo, aunque el primer método no arroja ningún error, me queda con un objeto vacío como este:

  console.log(total)6  

Realmente no puedo encontrar ningún ejemplo coherente de cómo consumir un servicio de SOAP Microsoft. Intenté leer las cosas MSDN, pero está orientada exclusivamente hacia sus bibliotecas propietarias, por lo que es de poco uso a cualquier otra persona.

Original en ingles

I've read every question on Stackoverflow as well as every Google article I could find.

I need to consume a SOAP API that is being provided by a Microsoft system that uses datasets.

I've got to the point where I feel that I need to do this:

$soapClient = new soapclient($this->wsdlUrl,array('trace'=>true)); $soapResult = $soapClient->GetScheduledSectors(); $xmlResult = $soapClient->__getLastResponse(); $xml = simplexml_load_string($xmlResult, NULL, NULL, "http://schemas.xmlsoap.org/soap/envelope/"); 

Rather than using this approach:

$result = $soapClient->GetScheduledSectors(); $xml = simplexml_load_string($result->GetScheduledSectorsResult->any) 

Because simplexml cannot parse the result as it lacks the soap response headers.

However, even though the first method does not throw any errors I am left with an empty object like this:

SimpleXMLElement Object (     [Body] => SimpleXMLElement Object         (         ) ) 

I really cannot find any coherent example of how to consume a Microsoft SOAP service. I tried reading the MSDN stuff but it's geared exclusively towards their proprietary libraries so is of little use to anybody else.

        
         
         

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Hay algunas herramientas que recurre a la hora de correr en problemas de jabón,

  1. SOAPUI Es una gran herramienta que lee la definición de servicio de la WSDL y crea firmas de salida para ti. Puede probar el servicio al servicio rápidamente y verifique las respuestas y el amplificador; Muestra las cargas útiles cuando se ejecuta en problemas con sus propios clientes.

  2. tcpmon cuando la marcha es difícil a veces tiene que mirar en los datos pasando por el cable. Ejecutando una solicitud (que funciona) a través de Soapui, luego la misma carga útil a través de un programa SoapClient PHP y observándolos ambos en tránsito puede ayudarlo a aislar los problemas en el código PHP.

  3. nusoap Cuando todo lo demás falla ... Nusoap fue pre-Soapclient, pero incluso Después de golpear el Soapclient, las escenas Nusoap siguen siendo útiles para los casos de borde donde el Soapclient simplemente no lo está cortando. También hay algunas funciones (por ejemplo, adjuntos de jabón?) Nusoap implementa que el Soapclient no tiene.

 

There are a few tools I resort to when running into SOAP issues,

  1. SoapUI It's a great tool that reads the service definition from the WSDL and creates stubbed out signatures for you. You can test hitting the service quickly and check responses & sample payloads when running into issues with your own clients.

  2. TCPMon When the going get's tough sometimes you have to look at the data going across the wire. Running a request (that works) through SoapUI, then the same payload through a SoapClient PHP program and watching them both in transit can help you isolate issues in the PHP code.

  3. NuSoap When all else fails... NuSoap was pre-SoapClient, but even after SoapClient hit the scenes NuSoap remains useful for edge cases where SoapClient just isn't cutting it. There are also some functions (eg. Soap Attachements?) NuSoap implements that SoapClient doesn't have.

 
 
2
 
vote

Después de probar Nusoap todavía me golpee la cabeza contra la pared. Finalmente, decidí analizar manualmente el Microsoft XML.

Afortunadamente hay un script ( aquí ) que me ahorró la molestia de hacer esto desde cero.

El script funciona y salga la respuesta de Microsoft DataSet en una matriz que pueda usar.

Me siento bastante mal con esta solución porque acceder a la matriz se realizará de manera codificada, pero francamente después de la cantidad de esfuerzo que he puesto en intentar encontrar soluciones alternativas, veo esto como un mal necesario.

 

After trying nusoap I still hit my head against the wall. I eventually decided to manually parse the Microsoft XML.

Luckily there is a script (here) that saved me the hassle of doing this from scratch.

The script works and output the Microsoft dataset response into an array that I can use.

I feel quite bad with this solution because accessing the array is going to be done in a hard-coded way, but frankly after the amount of effort I have put into trying to find alternate solutions I see this as a necessary evil.

 
 

Relacionados problema

133  DataSet de DataTable vs  ( Datatable vs dataset ) 
Actualmente utilizo un DataTable para obtener resultados de una base de datos que puedo usar en mi código. Sin embargo, muchos ejemplos en el programa web c...

1  poner matriz de clase personalizada en un conjunto de datos o XML (C #)  ( Put custom class array into a dataset or xml c ) 
Estoy haciendo un pequeño juego de cartas que requiere una lista de puntuación más alta que se guarda en un archivo externo, y están cargados de ella al comie...

0  Broker de servicio SQL Server con conjunto de datos  ( Sql server service broker using dataset ) 
Estoy convirtiendo una aplicación de consola para ejecutar desde Broker de servicio en SQL Server 2005. La aplicación hace un uso pesado de Dataset . s...

0  Crea un subconjunto de un conjunto de datos ASP.NET  ( Create subset of a dataset asp net ) 
Tengo un conjunto de datos que está teniendo algunas 28 columnas ahora quiero hacer otro conjunto de datos que contenga dos columnas que tengan 14 columnas en...

0  Diseñador de dataset - Auto Agregar columnas  ( Dataset designer auto add columns ) 
En mi aplicación vb.net He creado un conjunto de datos que convoca un procedimiento almacenado de MS SQL Server existente, pero después de que el asistente ci...

0  Trabajando con filas de Dataset  ( Working with dataset rows ) 
Tengo un conjunto de datos que obtengo de un servicio web con el que relleno una vista de lista. Hasta ahora lo he estado haciendo así: WPF5 Pero ese VA...

0  Vista previa técnica de SSRS 2016 Power BI  ( Ssrs 2016 power bi technical preview ) 
Al intentar construir un DataSet en la vista previa técnica de SSRS Power BI a través del Informe Builder 2016 Recibo el error a continuación una vez que pres...

0  Filtro de bloqueo de datos y comparación de fechas  ( Databinding filter and date comparison ) 
Tengo un conjunto de datos con una fecha de contenido que contiene la fecha en formato "Día-mes-año". Ese conjunto de datos está unido a DatagridView con un o...

8  SSRS ejecuta SQL / Dataset condicionalmente  ( Ssrs run sql dataset conditionally ) 
Tengo un informe de SSRS que contiene varios sub-informes. El usuario tiene la capacidad de seleccionar / deseleccionar qué subcomabilidades desean producir u...

0  ¿Cuál es la mejor manera de almacenar los datos codificados JSON en el proyecto DART / Flutter?  ( Whats the best way to store the json encoded data in dart flutter project ) 
Estaba pensando en la gran cantidad de datos que se han pasado por API. Hasta ahora estaba haciendo las cosas como a continuación. El problema que estoy enfre...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos