私はweedmaps
というウェブサイトから場所のリストを取得しようとしています。これは私が使っているコードです:
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' );
Weedmapsのマップページを見ているときcomと私のネットワークタブを見るこれは正しいエンドポイントのようです。私はwp_remote_post
がどのように機能するかについて何かを逃したと思います。
私はapiで404を見たことがありませんが、私はそれに少し新しいです。
それは私が電話をかけたように見えますが、多分apiの専門家は私がここで間違ったことを見ています。
これは私が得るエラーメッセージです:
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
)
POSTリクエストの代わりにGETリクエストを使用してみてください。ヘッダーはPOSTリクエストでweedmaps.comからのOriginのみを許可することを示します。 WordPressのメソッドは 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' );