0

谁能帮我把它翻译成 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 更容易。

4

2 回答 2

0

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

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

如果您想以正确的方式进行操作,可以阅读此处

对于身份验证,只有一行:

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

于 2017-03-18T17:37:37.863 回答
0
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);
    }
于 2017-12-27T17:27:01.870 回答