用Curl POST请求PHP

时间:2019-03-13 21:09:49

标签: php json wordpress api request

我正在一个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中如何工作。你们可以检查出来并帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

有一些可以帮助您的答案,例如this one

但是,WordPress实际上具有内置功能来发出名为wp_remote_get()wp_remote_post()的GET和POST请求(实际上是我相信的cURL?)。显然,您需要使用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>';
}