• 0

Question

Hola buenas, estoy tratando de reemplazar unas imagenes de una publicación, pero no consigo hacerlo, este es el codigo que ocupo para mandar la petición :

 
$urlReplaceImage = "https://api.mercadolibre.com/items/" . $item . "?access_token=" . $token ;
$imgMeli = "http://mlc-s1-p.mlstatic.com/973440-MLC31651341797_082019-O.jpg" ; //Imagen a reemplazar
 
$dataMeli["pictures"] []   = array( "source"   =>  $imgMeli ) ;
$dataMeli["pictures"] []   = array( "source"   =>  $imgMeli ) ;
 
$responseMeli = $this->httpPut( $urlReplaceImage, $dataMeli ) ;
 
echo $responseMeli  ;
 
------------------------------------------------
//Función httpPut
    private function httpPut( $url , $dataMeli ){
        $dataMeli = json_encode( $dataMeli );
        $ch = curl_init( $url ) ;
        curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true ) ;
        curl_setopt( $ch , CURLOPT_CUSTOMREQUEST , "PUT") ;
        curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( $dataMeli ) ) ;
        curl_setopt( $ch , CURLOPT_HTTPHEADER ,
        array(
            'Content-Type: application/json',
            'Accept: application/json'
        ));
        $response = curl_exec($ch) ;
        return $response ;
    }
 

y la respuesta que obtengo siempre es :

"{"message":"body.invalid","error":"A body is expected. (A)","status":400,"cause":[]}"

Cualquier aporte es bien recibido, Saludos.

 

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Puede que el error sea que usas:

 curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( $dataMeli ) ) ;

Pasale solo el $dataMeli a ver si te funca. Y sino, usa la SDK parar php que te hace eso mas facil: https://github.com/mercadolibre/php-sdk

De paso te comento que ese sdk usa estas opts por defecto para el curl:

 

public static $CURL_OPTS = array(
        CURLOPT_USERAGENT => "MELI-PHP-SDK-2.0.0", 
        CURLOPT_SSL_VERIFYPEER => true, 
        CURLOPT_CONNECTTIMEOUT => 10, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_TIMEOUT => 60
    );

 

El CURLOPT_SSL_VERIFYPEER yo localmente lo testeo en false, sino no funciona obiamente.

Share this post


Link to post
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