【问题标题】:'CURLE_URL_MALFORMAT' but all the syntax seems to be ok'CURLE_URL_MALFORMAT' 但所有语法似乎都可以
【发布时间】:2021-10-11 09:14:22
【问题描述】:

我对 cUrl 有疑问。最近,我发现问题出在 curl 的语法上,因为当我转储要执行的请求并将其放入 PostMan 时它可以工作,但是我代码中的函数没有并返回 3: 'CURLE_URL_MALFORMAT' .有关信息,我的 curl 版本是 7.79.1

我用 CURLOPT_RETURNTRANSFER、CURLOPT_POST 等尝试了一些不同的方法,但它不起作用...

这是我的功能:

private function cUrl_CreateContactFastFood($merchant_token, $arr)
            {
                $status = "active";                         
                $Contact_name = $arr["customerName"];               
                $Contact_email = '';
                                
                if($Contact_email=='') {
                        $Contact_email= 'FastFoodCustomer@ttt.com'; 
                }
                        
                $Contact_phone = $arr["phoneNumber"];   
                $Contact_address = $arr["endAddressResolved"];                  

                $url = 'http://dostavka-bg.com/api_services/insert_contact';
                $curl_params = '?keys=f74192da825962d3b1c2b2aa616ab68b&merchant_token='.$merchant_token.'&name='.$Contact_name.'&email='.$Contact_email.'&phone='.$Contact_phone.'&address='.$Contact_address.'&status='.$status;
                                   
                $ch = curl_init();
                $headers = array(
                  'Accept: */*',
                  'User-Agent: ',
                  'Accept-Encoding: gzip, deflate, br',
                  'Host: dostavka-bg.com',
                  'Connection: keep-alive'
                );
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($ch, CURLOPT_URL, $url.$curl_params);
            
                $data = curl_exec($ch);
                if (curl_errno($ch)) {
                    echo 'Error:' . curl_error($ch);
                }

                curl_close($ch);

            }

这是解决的问题:

private function cUrl_CreateContactFastFood($merchant_token, $arr)
            {
                $status = "active";
                            
                $Contact_name = $arr["customerName"];

                                
                $Contact_email = '';//$arr["customer"]["invoicing_details"]["company_address"];
                if($Contact_email==''){
                     $Contact_email= 'FastFoodCustomer@ttt.com';                                
                }
                        
                $Contact_phone = $arr["phoneNumber"];   
                $Contact_address = $arr["endAddressResolved"];                  
            
                $url = 'http://dostavka-bg.com/api_services/insert_contact';
                
                $curl_params = '?keys=f74192da825962d3b1c2b2aa616ab68b&merchant_token='.urlencode($merchant_token).'&name='.urlencode($Contact_name).
                '&email='.urlencode($Contact_email).'&phone='.urlencode($Contact_phone).'&address='.urlencode($Contact_address).'&status='.urlencode($status);
                
                $ch = curl_init();
                
                $headers = array(
                  'Accept: */*',
                  'User-Agent: ',
                  'Accept-Encoding: gzip, deflate, br',
                  'Host: dostavka-bg.com',
                  'Connection: keep-alive'
                );
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($ch, CURLOPT_URL, $url.$curl_params);
                curl_setopt($ch, CURLOPT_POST, 1);
                
                $data = curl_exec($ch); 

                if (curl_errno($ch)) {
                    echo 'Error:' . curl_error($ch);
                }
                
                $info = curl_version();
             
                curl_close($ch);
                return true;
            }

【问题讨论】:

  • 您的网址可能包含一些垃圾字符,例如换行符或空格?
  • 我没有看到任何空格。但是我看到了一些有趣的东西。在邮递员中它可以工作,但是当我摆脱主机头()它停止。有没有办法在上面的 mu curl 中添加主机?
  • 您正在使用不安全的http:// URL。

标签: php curl php-curl


【解决方案1】:

您传递的 URL 包含几个查询字符串参数,您的示例中只显示了其中一些参数,但其中一些可能包含 URL 中不允许的标点符号或其他字符。这些需要通过以下任一方式正确编码:

【讨论】:

  • 非常感谢您的帮助。 urlencode 解决了我的问题。度过愉快而成功的一周。朋友!
猜你喜欢
  • 2012-12-09
  • 1970-01-01
  • 2021-02-27
  • 2015-07-29
  • 1970-01-01
相关资源
最近更新 更多