examples cliente php soap reporting-services ssrs-2008 ssrs-2008-r2

cliente - php wsdl soap client



Excepción de SoapFault no capturada:[WSDL] SOAP-ERROR: análisis de WSDL (1)

Algunos gochas que solo encontré por prueba y error son algunos problemas de configuración, en el servidor que ejecuta el servicio del servidor de informes, asegúrese de que en su archivo rsreportserver.config se haya modificado para permitir la autenticación básica. De forma predeterminada, si lo estoy entendiendo correctamente, quiere un tipo de conexión más confiable, pero el SDK necesita que permita pasar el nombre y las contraseñas simples. Esto significa que debe agregarse a sus métodos de autenticación en la configuración.

así por ejemplo,

En C: / Archivos de programa / Microsoft SQL Server / MSRS11.1 / Reporting Services / ReportServer / rsreportserver.config (Diferente para el servidor y la versión, pero se entiende la idea).

<Authentication> <AuthenticationTypes> <RSWindowsNTLM/> <RSWindowsBasic/> ##you need to add this one## </AuthenticationTypes> <RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel> </Authentication>

IIRC tendrá que reiniciar el servicio para que esto surta efecto.

Además, si está intentando RenderAs, algunos de los archivos de plantilla utilizados para mostrar los encabezados tienen espacio hacia el final que le impedirá representar como Excel, PDF, etc. a menos que eso se haya solucionado desde que trabajé en él.

Estoy mirando el código que me proporcionó, puede que lo esté leyendo mal, pero parece que está intentando definir explícitamente el informe que está buscando en la URL de ejecución. Si eso es lo que estás haciendo, creo que la solución sería definir solo la base de informes a la que te estás conectando, por lo que para tu ejemplo, la URL debería ser http://172.16.4.63/ReportServer/ . Después de que se haga la conexión, usaría la función LoadReport2 para especificar qué informe necesita.

Por último, ¿dónde tiene el nombre del informe, parece que tiene un subdirectorio llamado testfolder? si ese es todavía el caso, necesitaría que su nombre de informe fuera "/ TestFolder / testClaimHdr" en la llamada a LoadReport2.

Espero que algo de eso ayude.

Estoy usando SSRS SDK para PHP

Versión PHP 5.4

WebServer: Centos 6.4

MSSQL Server 2008 R2

Cuando hago

$ssrs_report = new SSRSReport(new Credentials(UID, PASWD), SERVICE_URL);

Tuve el siguiente error

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn''t load from ''http://172.16.4.63/ReportServerURL/Pages/ReportViewer.aspx?%2fTestFolder%2ftestClaimHdr&rs:Command=Render/ReportExecution2005.asmx?wsdl'' : Premature end of data in tag html line 1 in /var/www/emilio/app/Libraries/SSRSReport/bin/SSRSReport.php:196 Stack trace: #0 /var/www/emilio/app/Libraries/SSRSReport/bin/SSRSReport.php(196): SoapClient->SoapClient(''http://172.16.4...'', Array) #1 /var/www/emilio/SSRS/index.php(12): SSRSReport->SSRSReport(Object(Credentials), ''http://172.16.4...'') #2 {main} thrown in /var/www/emilio/app/Libraries/SSRSReport/bin/SSRSReport.php on line 196

Estoy buscando cómo solucionarlo y obtener el informe a través del jabón ( SSRS SDK para PHP ).

Intenté usar file_get_content() y curl y ambos funcionaron bien, entonces no hay problemas de conexión, tengo

  • Soap Client habilitado
  • allow_url_fopen está activado

esta es la línea donde el SDK llama al servicio de jabón

$executionServiceUrl="http://172.16.4.63/ReportServerURL?%2fTestFolder%2ftestClaimHdr&rs:Command=Render/ReportExecution2005.asmx?wsdl"; $options = array ( ''login'' => ''xxxx//xxxx'', ''password'' => ''xxxx'', ) $this->_soapHandle_Exe = new SoapClient($executionServiceUrl, $options);

Añadiendo

try { $this->_soapHandle_Exe = new SoapClient($executionServiceUrl, $options); } catch (Exception $e) { var_export(libxml_get_last_error()); }

Obtengo la siguiente matriz:

LibXMLError::__set_state(array( ''level'' => 3, ''code'' => 77, ''column'' => 43325, ''message'' => ''Premature end of data in tag html line 1'', ''file'' => ''http://172.16.4.63/ReportServerURL?%2fTestFolder%2ftestClaimHdr&rs:Command=Render/ReportExecution2005.asmx?WSDL'', ''line'' => 1, )

De acuerdo con xmlerror de libxml2

nivel 3 = XML_ERR_FATAL = 3: un error fatal

código 77 = XML_ERR_TAG_NOT_FINISHED = 77: 77

Ya he establecido la autenticación básica en el SERVIDOR SSRS

Actualizar

Como @jwhaley58 dijo que cambié a:

define("SERVICE_URL", "http://172.16.4.63/ReportServerURL"); $ssrs_report = new SSRSReport(new Credentials(UID, PASWD), SERVICE_URL); $ssrs_report->LoadReport2(''testClaimHdr'',NULL);

y obtengo:

Fatal error: Uncaught exception ''SSRSReportException'' in /var/www/emilio/app/Libraries/SSRSReport/bin/SSRSReport.php:590 Stack trace: #0 /var/www/emilio/app/Libraries/SSRSReport/bin/SSRSReport.php(326): SSRSReport->ThrowReportException(Object(SoapFault)) #1 /var/www/emilio/SSRS/index.php(15): SSRSReport->LoadReport2(''testClaimHdr'', NULL) #2 {main} thrown in /var/www/emilio/app/Libraries/SSRSReport/bin/SSRSReport.php on line 590