web-dev-qa-db-fra.com

Essayez d'obtenir une erreur d'about 404

J'essaie d'obtenir une liste d'emplacements à partir d'un site Web appelé weedmaps. C'est le code que j'utilise:

function call_for_api() {


    $url='https://api-v2.weedmaps.com/api/v2/listings';
    $response = wp_remote_post( $url, array(
        'timeout' => 45,
        'redirection' => 5,
        'httpversion' => '1.0',
        'blocking' => true,
        'headers' => array('accept'=>'application/json','accept-encoding' => 'gzip, deflate, br','connection' =>'keep-alive'),
        'body' => null,
        'cookies' => array(),
        'compress'    => false,
            'decompress'  => true,
            'sslverify'   => true,
            'stream'      => false,
            'filename'    => null,  
        'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'
                )
        );

    if ( is_wp_error( $response ) ) {
         $error_message = $response->get_error_message();
        echo "Something went wrong: $error_message";
    } else {
         echo 'Response:<pre>';
         print_r( $response );
             echo '</pre>'; 
 echo wp_remote_retrieve_body( $response );

    }
}

function cf_shortcode() {
    ob_start();
    call_for_api();

    return ob_get_clean();
}

add_shortcode( 'weed-list', 'cf_shortcode' );

Lorsque je consulte la page des cartes sur weedmaps. com et voir mon onglet de réseau cela semble être le bon point final. Je pense avoir oublié quelque chose dans le fonctionnement du wp_remote_post.

Je n'ai jamais vu un 404 en api, mais je suis un peu nouveau dans ce domaine.

On dirait que j'ai bien téléphoné, mais peut-être que les experts en api verront ce que j'ai mal fait ici.

C'est le message d'erreur que je reçois:

Array
(
    [headers] => Requests_Utility_CaseInsensitiveDictionary Object
        (
            [data:protected] => Array
                (
                    [access-control-allow-credentials] => true
                    [access-control-allow-methods] => GET, POST, PUT, DELETE, OPTIONS
                    [access-control-allow-Origin] => https://weedmaps.com
                    [access-control-expose-headers] => 
                    [access-control-max-age] => 1728000
                    [content-type] => application/json; charset=UTF-8
                    [date] => Thu, 27 Jul 2017 04:37:10 GMT
                    [server] => nginx/1.4.6 (Ubuntu)
                    [vary] => Origin
                    [x-request-id] => 80e789df-9a6b-47af-9358-5b54626551e9
                    [x-runtime] => 0.008710
                    [content-length] => 34
                )

        )

    [body] => {"status":404,"error":"Not Found"}
    [response] => Array
        (
            [code] => 404
            [message] => Not Found
        )
2
rudtek

Essayez d’utiliser une requête GET au lieu d’une requête POST. Les en-têtes indiquent qu'ils autorisent uniquement l'origine à partir de weedmaps.com dans la demande POST. La méthode dans WordPress est wp_remote_get () .

    function call_for_api() {
        $url='https://api-v2.weedmaps.com/api/v2/listings';
        $response = wp_remote_get( $url,
            array(
                'timeout'     => 45,
                'redirection' => 5,
                'httpversion' => '1.0',
                'blocking'    => true,
                'headers'     => array(
                    'accept'          => 'application/json',
                    'accept-encoding' => 'gzip, deflate, br',
                    'connection'      =>'keep-alive'
                ),
                'body' => null,
                'cookies'     => array(),
                'compress'    => false,
                'decompress'  => true,
                'sslverify'   => true,
                'stream'      => false,
                'filename'    => null,  
                'user-agent'  => 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
            )
        );

        if ( is_wp_error( $response ) ) {
            $error_message = $response->get_error_message();
            echo "Something went wrong: $error_message";
        } else {
            echo 'Response:<pre>';
            print_r( $response );
            echo '</pre>'; 
            echo wp_remote_retrieve_body( $response );
        }
}

function cf_shortcode() {
    ob_start();
    call_for_api();

    return ob_get_clean();
}

add_shortcode( 'weed-list', 'cf_shortcode' );
3
Tim Elsass