2

curl で URL を実行できません。ただし、単にブラウザを介してクエリを実行すると、正常に機能します。私のコードは次のようなものです:

$xmlData = "<Leads><row no='1'><FL val='First Name'>".$new_fname."</FL><FL val='Last Name'>".$new_lname."</FL><FL val='Email'>".$new_email."</FL><FL val='Phone'>".$new_ph_no."</FL></row></Leads>";
$xmlData = htmlentities($xmlData);
$ch = curl_init("https://crm.zoho.com/crm/private/xml/Leads/insertRecords?newFormat=1&authtoken=XXX&scope=crmapi&xmlData=".$xmlData);
curl_setopt($ch, CURLOPT_VERBOSE, 1);//standard i/o streams 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);// Turn off the server and peer verification 
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'rsa_rc4_128_sha'); //for godaddy server patch
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Set to return data to string ($response) 
curl_setopt($ch, CURLOPT_POST, 1);//Regular post 
$response = curl_exec($ch); 
curl_close($ch);

問題がどこにあるのか教えてください。前もって感謝します。

4

1 に答える 1

1

次のコードが機能するはずです。

$ch = curl_init("https://crm.zoho.com/crm/private/xml/Leads/insertRecords?newFormat=1&authtoken=XXX&scope=crmapi&xmlData=".$xmlData);

curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// deactivate certificate checking 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Set to return data to string ($response) 
curl_setopt($ch, CURLOPT_POST, 1);//Regular post 
$response = curl_exec($ch); 

if(!$response) {
    echo curl_error($ch), PHP_EOL;
}
curl_close($ch);

ディスカッションのコメントの後、システムに Thawte ssl 証明書がインストールされていないことが問題であることに気付きました。次の 2 つのオプションがあります。

  • 証明書をインストールする
  • を使用して証明書のチェックを無効にしますCURLOPT_VERIFYPEER = FALSE

この例では、コードを機能させる方法を示すために 2 番目のアプローチを使用しました。本番システムの場合、証明書をインストールすることをお勧めします。

于 2013-02-06T11:53:31.957 に答える