Jump to content

Pswebservicelibrary Error .. Bad Http Response


Recommended Posts

Buenas a todos.

Estoy intentando probar y configurar el Webservice para la versión 1.6.1.2 sin conseguir hasta ahora un resultado correcto, me explico.

 

La activación del Webservice no he tenido problemas.

Si realizo la consulta del tipo: "www.myweb.es/api", me pide clave usuario, la pongo y me devuelve la información solicitada.

 

<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<api shopName="EARPRO PARTS">
<suppliers xlink:href="http://parts.earpro.es/api/suppliers" get="true" put="true" post="true" delete="true" head="true">
<description xlink:href="http://parts.earpro.es/api/suppliers" get="true" put="true" post="true" delete="true" head="true">The product suppliers</description>
<schema xlink:href="http://parts.earpro.es/api/suppliers?schema=blank" type="blank"/>
<schema xlink:href="http://parts.earpro.es/api/suppliers?schema=synopsis" type="synopsis"/>
</suppliers>
</api>
</prestashop>

 

 

con lo que la comunicación esta abierta. Todo correcto.

 

Ahora, cuando es lugar de usar este tipo de consulta uso la consulta usando PSWebServiceLibrary.php solo consigo tener 

el siguiente error:

 

"Other error: 
Supplier's List"

 

Cambiando en el codigo de la pagina php la linea "echo 'Other error; "

 

por 

 

"echo 'Other error: <br />' . $ex->getMessage();"

 
Consigo ver que el error es "bad http response".
 
Y hasta aquí he llegado, por que no se por donde buscar el problema. Por más que consulto, no encuentro mucha información con relación al webservice o a este error.
 
espero que alguien me pueda dar una pista de por donde seguir.
 
Gracias a todos.

 

Link to comment
Share on other sites

  • 1 year later...
  • 9 months later...

Hola.

Hoy me he encontrado con este mismo error. Después de probar un rato he conseguido solucionarlo.

El problema viene por el certificado SSL instalado en el servidor. Por defecto curl intenta validar el certificado. Si no lo reconoce como emitido por una entidad válida, lo da por malo y no realiza la conexión. La solución es indicarle a Curl que no verifique nada. Lógicamente con un servidor en producción lo normal es tener un buen certificado y esto no haría falta, pero en pruebas puede pasar.

Para solucionarlo hay que editar la librería del webservice PSWebServiceLibrary.php, método executeRequest. Ahí añadimos en $defaultParams un par de líneas, quedando de esta forma:

$defaultParams = array(
            CURLOPT_HEADER => TRUE,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLINFO_HEADER_OUT => TRUE,
            CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
            CURLOPT_USERPWD => $this->key.':',
            CURLOPT_HTTPHEADER => array( 'Expect:' ),
            CURLOPT_SSL_VERIFYHOST => 0,     // Añadida
            CURLOPT_SSL_VERIFYPEER => 0     // Añadida
        );
 

Con esta modificación ya podemos utilizar https sin problemas.

Un saludo.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...