【发布时间】:2012-09-28 14:00:18
【问题描述】:
我正在尝试使用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,则不返回任何内容。
我的代码有什么问题?
【问题讨论】:
-
尝试从
your serverpingdestination server看看它是否可以访问。 -
在
urlencode($blue)中,$blue是什么?我没有在你的函数中看到它。 -
由 extract($what) 命令定义。
-
你在 Arduino 端运行的草图是什么?