使用 PHP 的 cURL / 使用 PUT 和 GET

cURL with PHP / Working with PUT and GET

谁能帮我把这个翻译成PHP代码:

curl -X GET --header "Accept: text/plain" "https://test:testpassword@domain.com:1443/rest/items/test/state"

和:

curl -X PUT --header "Content-Type: text/plain" --header "Accept: application/json" -d "OFF" "https://test:testpassword@domain.com:1443/rest/items/test/state"

我的尝试失败了。通常我会使用这个:

function sendCommand($item, $data) {
  $url = "http://192.168.1.121:8080/rest/items/" . $item;

  $options = array(
    'http' => array(
        'header'  => "Content-type: text/plain\r\n",
        'method'  => 'POST',
        'content' => $data  //http_build_query($data),
    ),
  );

  $context  = stream_context_create($options);
  $result = file_get_contents($url, false, $context);

  return $result;
}

但我不知道如何向脚本添加 SSL 支持和身份验证,我知道使用 cUrl 更容易。

使其与 https 一起使用的最简单方法是添加:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

如果你想以正确的方式做到这一点,你可以阅读here

为了验证,只有一行:

curl_setopt($process, CURLOPT_USERPWD, "username:password");

function sendCommand($item,$itemValue){
        $ch = curl_init("http://[IP from openHAB2]:8080/rest/items/".$item."/state");
        $curlOptions = array(
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_HTTPHEADER => array('Content-Type: text/plain','Accept: application/json'),
            CURLOPT_CUSTOMREQUEST => 'PUT',
            CURLOPT_POSTFIELDS => NULL,
            CURLOPT_POSTFIELDS => $itemValue
        );
        curl_setopt_array($ch, $curlOptions);
        if(curl_exec($ch) === false){
            $this->updateDatabase(curl_error($ch));
            echo 'Curl-Fehler: ' . curl_error($ch);
            exit();
        }else{
            curl_exec($ch);
            return true;
        }
        curl_close($ch);
    }