3

cURLを使用してサーバーからイーサネット シールドを使用して Arduino にHTTP POST送信しようとしていますが、機能しません。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";
    }
}

次の 2 つの応答が返されます。

cURL エラー (28): connect() がタイムアウトしました!

cURL エラー (7): ホストに接続できませんでした

CURLOPT_CONNECTTIMEOUTが宣言されていない場合、何も返されません。

コードの何が問題になっていますか?

4

1 に答える 1