Drupal 7 PHP cURL not executing


Drupal 7 PHP cURL not executing

我试图通过cURL POST向第三方发送drupal web表单的结果。我的cURL函数不工作,我正在努力寻找我的错误。我以前从未使用过cURL,所以我不太确定它是如何工作的,甚至不知道它到底做了什么。

据我所知,我正在拼凑要正确发送的URL,发送只是失败。

<?php
module_load_include('inc','webform','includes/webform.submissions');
$uri = $_SERVER[REQUEST_URI];
$sid = substr($uri, 20);
$submission = webform_get_submissions(array('sid' => $sid));
$nid = $submission[$sid]->nid;
$sql = db_select('webform_submitted_data', 'w');
$sql->fields('w', array('sid','cid','data'))
    ->condition('sid', $sid)
    ->condition('cid', array(1,2,3,4,5,6,7,8),'IN');
$results = $sql->execute();
$post = NULL;
$url = urlencode('http://ulm.datamark.com/services/lead_submission&client_code=DAV4516&source_code=DAVNCU');
foreach($results as $result)
    {
        if ($result->cid == 1) {
            $post .= "first_name=" . urlencode($result->data);
        } else if ($result->cid == 2) {
            $post .= "&last_name=" . urlencode($result->data);
        } else if ($result->cid == 3) {
            $post .= "&email=" . urlencode($result->data);
        } else if ($result->cid == 4) {
            $post .= "&phone=" . urlencode($result->data);
        } else if ($result->cid == 5) {
            $who = $result->data;
        } else if ($result->cid == 6) {
            $post .= "&phone2=" . urlencode($result->data);
        } else if ($result->cid == 8) {
            $post .= "&comments=" . urlencode($result->data);
        }

    }
dsm($who);
dsm($url.$post);

if ($who == "fs")
{
 $defaults = array( 
        CURLOPT_POST => 1, 
        CURLOPT_HEADER => 0, 
        CURLOPT_URL => $url, 
        CURLOPT_FRESH_CONNECT => 1, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_FORBID_REUSE => 1, 
        CURLOPT_TIMEOUT => 4, 
        CURLOPT_POSTFIELDS => http_build_query($post) 
    ); 
   $ch = curl_init(); 
   curl_setopt_array($ch, ($defaults)); 
    if( ! $result = curl_exec($ch)) 
    { 
        echo "Something went wrong";
        trigger_error(curl_error($ch)); 
    } 
    curl_close($ch);

?>

我的眼睛看到了几个问题:

    不要对URL本身进行urlencode。该函数用于在url的Query部分中传递的数据(后面的部分?)
  1. 看起来你的url中缺少?
  2. 我认为你在Post数据的组装中有一些逻辑问题。首先,对每个post字段的所有$result->数据进行编码。您可能希望一次只包含一个字段。其次,将一个字符串传递给http_build_query(),它需要一个数组或一个对象。也许您可以将$post重构为一个数组,这可能使调试更容易。阅读cURL和http_build_query的文档,了解它们的期望和作用。例如,cURL扩展可以为你做很多工作,如果你为CURLOPT_POSTFIELDS传递一个数组到curl_setopt。