¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo solucionar el error wsse:InvalidSecurity en la segunda llamada SOAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 42 Vistas
0
Cargando...

Hola,

He intentado implementar un pequeño script de PHP para enviar ideas a xPD 2.0. La primera fase es exitosa (la idea se envía y se obtiene el guid). Pero cuando intento subir un archivo adjunto usando un servicio web diferente, recibo este mensaje de error:

wsse:InvalidSecurity. 00E000C4EA35007A0000035700001077000412CCC9797F64 : WS Security solo se puede aplicar a un documento SOAP.

¿Alguna idea de por qué falla mi segunda llamada SOAP?

Aquí tienes ambos scripts:

submit.php (esto funciona)

[código]

<?php

$title = $_POST['title'];

$description = $_POST['description'];

$source = $_POST['source'];

$client = new SoapClient('our_server/WSxPDService/WSxPDServiceConfig?wsdl',

array('login' => "xxx", 'password' => "xxx", 'style' => SOAP_DOCUMENT));

$header = array("description" => $description,

"owner" => "xxx",

"title" => $title,

"guid" => "",

"source" => $source,

"author" => "xxx",

"protectionLevel" => "Normal",

"relatedInsights" => "",

"relatedFacts" => ""

);

try {

$result = $client->createIdea(array("header" => $header));

} catch (SoapFault $exception) {

die("<b>¡Fallo en la presentación de la idea!</b><br>" . $exception->content);

}

$guid = $result->Response;

include("attachment.inc");

?>

[/código]

submitAttachment.php (esto no funciona)

[código]

<?php

$guid = $_POST['guid'];

$name = $_POST['name'];

$attachment = $_FILES['attachment']['tmp_name'];

$contents = file_get_contents($attachment);

$client = new SoapClient('our_server/WSxPDExternalIdeaAttachment/EIAttachmentConfig?wsdl ', array('login' => "xxx", 'password' => "xxx"));

try {

$result = @$client->addIdeaAttachment( $guid, $name, $contents );

} catch (SoapFault $exception) {

die("<b>¡Fallo en la carga del archivo adjunto!</b><br>" . $exception->faultcode . ". " . $exception->faultstring . "<br><b>" . var_dump($exception));

}

Header("Location: addAttachments.php?guid=$guid");

exit;

?>

[/código]

Br,

Johannes

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Anton,

Solo hay un estilo llamado 'mime' disponible. Luego está la versión estándar y SAP de eso. He probado ambos.

Intenté cambiar el constructor así (sin éxito):

[código]

$client = new SoapClient('http://xxxx:50200/WSxPDExternalIdeaAttachment/EIAttachmentConfig?wsdl',

array('login' => "xxx", 'password' => "xxx", "style" => 'mime'));

[/código]

Aquí tienes el wsdl estándar:

<?xml version="1.0" encoding="utf-8"?>

<!-- Generado por WSDLDefinitionsParser --><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="WSxPDExternalIdeaAttachmentWsd" targetNamespace="urn:WSxPDExternalIdeaAttachmentWsd" xmlns:bns0="urn:WSxPDExternalIdeaAttachmentWsd/EIAttachmentConfig/mime" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<wsdl:import location="./bindings/EIAttachmentConfig_mime.wsdl" namespace="urn:WSxPDExternalIdeaAttachmentWsd/EIAttachmentConfig/mime"/>

<wsdl:service name="WSxPDExternalIdeaAttachment">

<wsdl:port name="EIAttachmentConfigPort_Mime" binding="bns0:EIAttachmentConfigBinding">

<soap:address location="http://xxxx:50200/WSxPDExternalIdeaAttachment/EIAttachmentConfig?style=mime"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Enlaces:

<?xml version="1.0" encoding="utf-8"?>

<!-- Generado por WSDLDefinitionsParser --><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:WSxPDExternalIdeaAttachmentWsd/EIAttachmentConfig/mime" xmlns:prt0="urn:WSxPDExternalIdeaAttachmentWsd/WSxPDExternalIdeaAttachmentVi/rpc_enc" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">

<wsdl:import location="../porttypes/EIAttachmentConfig_WSxPDExternalIdeaAttachmentVi_rpc_enc.wsdl" namespace="urn:WSxPDExternalIdeaAttachmentWsd/WSxPDExternalIdeaAttachmentVi/rpc_enc"/>

<wsdl:binding name="EIAttachmentConfigBinding" type="prt0:WSxPDExternalIdeaAttachmentVi_Rpc_enc">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>

<wsdl:operation name="addIdeaAttachment">

<soap:operation soapAction=""/>

<wsdl:input>

<mime:multipartRelated>

<mime:part>

<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:WSxPDExternalIdeaAttachmentVi"/>

</mime:part>

<mime:part>

<mime:content part="content" type="application/octetstream"/>

</mime:part>

</mime:multipartRelated>

</wsdl:input>

<wsdl:output>

<mime:multipartRelated>

<mime:part>

<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:WSxPDExternalIdeaAttachmentVi"/>

</mime:part>

</mime:multipartRelated>

</wsdl:output>

<wsdl:fault name="com.sap.xapps.xpd.webservices.exception.BOCreateException">

<soap:fault use="encoded" name="com.sap.xapps.xpd.webservices.exception.BOCreateException" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation name="getIdeaCategories">

<soap:operation soapAction=""/>

<wsdl:input>

<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:WSxPDExternalIdeaAttachmentVi"/>

</wsdl:input>

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

El WSDL sería útil también. ¿El WSDL define el estilo como 'documento'?

Supongo que hay un problema de estilo. Tal vez el WSDL dice rpc, o simplemente falta la declaración style = SOAP_DOCUMENT en el constructor de su cliente.

Saludos,

Anton

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Gregor,

La versión de PHP es 5.1.2.

Estamos ejecutando en Web AS Java 7.00 SP 5 (producto de Ramp-Up) con Portal 7.00 y xPD 2.0 SP1.

Al principio pensé que podría tratarse de algún tipo de problema de autorización, pero esa configuración debería ser similar a la del servicio que está funcionando.

Aquí está la solicitud SOAP que se envía al servicio web.

<?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP-ENV:Body>

<SOAP-ENV:addIdeaAttachment>

<ideaGuid>d0cc4480-da69-11da-be20-00e000c4ea35</ideaGuid>

<name>debug_settings.jpg</name>

<content>/9j/4AAQ... //omitir el resto del contenido // ...AL1FFFAH/2Q==</content>

</SOAP-ENV:addIdeaAttachment>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Saludos,

Johannes

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Johannes,

¿Podrías contarnos un poco más sobre tu panorama de sistemas? ¿Qué versión exacta de PHP y WebAS estás utilizando, incluidos los Service Packs?

Saludos,

Gregor

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?