【问题标题】:Warning: curl_setopt() expects parameter 2 to be integer, string警告:curl_setopt() 期望参数 2 为整数、字符串
【发布时间】:2021-03-20 12:22:46
【问题描述】:
<?php

$url = "https://api.razorpay.com/v1/contacts/cont_00000000000001";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_PATCH, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Content-Type: application/json",
   "Authorization: Basic cnpwXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0E",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$data = <<<DATA
{
  "name": "Tester",
  "email": "test@example.com",
  "contact": "9876543210",
  "type": "self",
  "reference_id": "Contact ID 12345",
  "notes": {
    "notes_key_1":"Tea, Earl Grey, Hot",
    "notes_key_2":"Tea, Earl Grey… decaf."
  }
}
DATA;

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);

?>

当我尝试执行此代码时,我收到此错误

警告:在线 C:\xampp\htdocs\payout_curl\update_contact.php 中使用未定义的常量 CURLOPT_PATCH - 假定为“CURLOPT_PATCH”(这将在 PHP 的未来版本中引发错误) 7

警告:curl_setopt() 期望参数 2 为整数,字符串在第 7 行的 C:\xampp\htdocs\payout_curl\update_contact.php 中给出 string(155) "{"error":{"code":"BAD_REQUEST_ERROR","description":"在服务器上找不到请求的 URL。","source":null,"step":null,"reason ":null,"metadata":{}}}"

为什么我会得到这个

【问题讨论】:

    标签: curl php-curl razorpay


    【解决方案1】:

    你好试试这种方式...

    <?php
        
        $url = "https://api.razorpay.com/v1/contacts/";
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        
        $headers = array(
           "Content-Type: application/json",
           "Authorization: Basic cnpwXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0E",
        );
        
        /* method 1 auth
        $headers = array(
          'Content-Type:application/json',
          'Authorization: Basic '. base64_encode("user:password") // <--- youruser:yourpass
        );*/
        
        /* method 2 auth 
        $login = "youruser";
        $password = "yourpass";
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($curl, CURLOPT_USERPWD, "$login:$password");*/
        
    
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        
        $data = array(
          'name' => 'Tester',
          'email' => 'test@example.com',
          'contact' => '9876543210',
          'type' => 'self',
          'reference_id' => 'Contact ID 12345',
          'notes' => array(
            'notes_key_1' => 'Tea, Earl Grey, Hot',
            'notes_key_2' => 'Tea, Earl Grey… decaf.'
          )
        );
        
        $data = http_build_query($data);
        
        /* http_build_query output: name=Tester&email=test@example.com&contact=9876543210&type=self.... */
        /* and use urlencode to have the @ and spaces posted corectly .. */
        
        curl_setopt($curl, CURLOPT_POSTFIELDS, urlencode($data));
        
        //for debug only!
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        
        $resp = curl_exec($curl);
        curl_close($curl);
        var_dump($resp);
        
    ?>
    

    并确保您的 php.ini 中启用了 php_curl.dll 模块...

    注意 extension=php_curl.dll 是否在 C:\xampp\bin\php\php.XXX\php.ini 或 C:\xampp\bin\apache\ApacheXXXX\bin\php.ini 中注释。

    您必须取消注释 C:\xampp\bin\php\php.XXX\php.ini 或 C:\xampp\bin\apache\ApacheXXXX\bin\php.ini 中的行 ;extension=php_curl.dll 修复了问题。

    curl_setopt($curl, CURLOPT_PATCH, true); curl 库中不存在..

    使用未定义的常量 CURLOPT_PATCH - 假定为“CURLOPT_PATCH”

    用于发出 POST 请求的白色自定义参数:

    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST')

    curl_setopt($ch, CURLOPT_POST, 1);

    用于发出 GET 请求的白色自定义参数:

    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET')

    【讨论】:

    • 是的,我已经启用了你说的文件,但我仍然面临同样的问题
    • 试试上面的代码已经修改,现在应该可以工作了
    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 2021-03-27
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多