首页 > 解决方案 > 使用 Curl POST 请求 PHP

问题描述

我正在做一个 wordpress 项目,我必须修改我的主题,所以我可以向外部 API 请求 JSON。我一直在互联网上搜索如何做到这一点,很多人使用 CURL。

我必须做一个 POST 请求,但我不知道它是如何工作的或如何去做。到目前为止,我已经运行了这段代码:

 $url='api.example.com/v1/property/search/';

 $data_array =  array(

            $id_company     =>  '123456',
            $api_token     =>  'abcd_efgh_ijkl_mnop',
    );

        $curl = curl_init();

        curl_setopt($curl, CURLOPT_POST, 1);

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data_array);
        curl_setopt($curl, CURLOPT_URL, $url);
         curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'APIKEY: 111111111111111111111',
        'Content-Type: application/json'
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

        $result = curl_exec($curl);
        if(!$result){die("Connection Failure");}
        curl_close($curl);
         echo($result);

我不知道我应该把我的身份验证信息放在哪里,或者 curl 方法在 PHP 中是如何工作的。各位大佬能看看,帮我解决一下吗?

标签: phpjsonwordpressapirequest

解决方案


有一些答案可以帮助你,比如这个

然而,WordPress 实际上有内置函数来发出 GET 和 POST 请求(我相信这实际上回退到 cURL?)命名为wp_remote_get()wp_remote_post(). 显然,在你的情况下,你会想要使用wp_remote_post().

$url = 'https://api.example.com/v1/property/search/';

$data_array = array(
    'id_company' => 123456,
    'api_token'  => 'abcde_fgh'
);

$headers = array(
    'APIKEY' => 1111111111,
    'Content-Type' => 'application/json'
);

$response = wp_remote_post( $url, array(
        'method' => 'POST',
        'timeout' => 45,
        'redirection' => 5,
        'httpversion' => '1.0',
        'blocking' => true,
        'headers' => $headers,
        'body' => $data_array,
        'cookies' => array()
    )
);

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

推荐阅读