2012-09-28 150 views
3

我試圖發送一個HTTP POST 我的Arduino與我的服務器的以太網盾cURL,但它不起作用。如果我通過HTML表格或Mac   OS   X的終端cURL發送POST值,則Arduino將接收數據,因此我假設Arduino代碼正常。用cURL發送一個HTTP POST到Arduino

這是我的捲曲功能:

function curler($what,$arduinoip){ 
    $url = "http://".$arduinoip; 
    extract($what); 
    $fields = array(
     'blue' => urlencode($blue) 
    ); 
    foreach($fields as $key=>$value){$fields_string .= $key.'='.$value.'&';} 
    $fields_strings = rtrim($fields_string, '&'); 
    // hasta aca todo bien 
    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_URL, $url); 
    curl_setopt($ch,CURLOPT_POST, true); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 20); 
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_strings); 
    //execute post 
    $result = curl_exec($ch); 
    $curl_errno = curl_errno($ch); 
    $curl_error = curl_error($ch); 
    curl_close($ch); 
    if ($curl_errno > 0) { 
     echo "cURL Error ($curl_errno): $curl_error\n"; 
    } else { 
     echo "Data received: $result\n"; 
    } 
} 

我得到兩個反應:

捲曲錯誤(28):connect()的超時!

捲曲錯誤(7):無法連接到主機

如果CURLOPT_CONNECTTIMEOUT未聲明,它沒有返回。

我的代碼有什麼問題?

+1

努力,查驗'你server'了'目的地server'並查看它是否可訪問。 – air4x

+0

'urlencode($ blue)','$ blue'是什麼?我沒有看到它在你的函數中定義。 –

+0

它由extract($ what)命令定義。 – Salsoni

回答

0

不要添加的 'http://' 您的主機IP之前:

$url = $arduinoip; 

儘量增加你的時間限制:

//200+ maybe?  
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 250);