使用cURL向Arduino发送HTTP POST

时间:2012-09-28 14:00:19

标签: php http curl arduino

我正在尝试使用cURL从我的服务器发送带有以太网屏蔽的HTTP POST 我的Arduino,但它不起作用。如果我通过HTML表单或Mac OS X的终端cURL 发送POST值,Arduino会收到数据,所以我认为Arduino代码没问题。

这是我的cURL功能:

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";
    }
}

我得到两个回复:

  

cURL错误(28):connect()超时!

  

cURL错误(7):无法连接到主机

如果未声明 CURLOPT_CONNECTTIMEOUT ,则不返回任何内容。

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

不要在主机ip之前添加'http://':

$url = $arduinoip;

尝试增加时间限制:

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