首页 > 解决方案 > 设置空 CURLOPT_POSTFIELDS

问题描述

我正在尝试使用通用库函数使用 curl 发送 GET 和 POST 请求。

function myCurl($url, $postData = null) 
{
    // Sets some default curl options here
    $options = array(
        ...
        CURLOPT_POSTFIELDS => $postData,
        ...
    );

    $ch = curl_init();
    // this works and sends GET
    // unset($options[CURLOPT_POSTFIELDS]); 

    curl_setopt_array($ch, $options);

    curl_exec($ch);
    curl_close($ch);
}

如果已设置,我希望此函数发送 POST $postData,否则将其视为GET. 但是,即使我将 POST 设置CURL_POSTFIELDSnull. 取消设置CURL_POSTFIELDS选项数组元素有效并发送一个GET. 但是,有没有办法保留CURL_POSTFIELDScurl 选项并将其设置为默认空值并使其发送GET请求?

标签: phpcurlphp-curl

解决方案


$options = array(
    ...
);
if(!empty($postData)){
    $options[CURLOPT_POSTFIELDS]=$postData;
}

或者,以下方法应该有效,但它是愚蠢的 imo:

$options = array(
    ...
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_HTTPGET => empty($postData)
    ...
);

推荐阅读