php
  • curl
  • philips-hue
  • 2015-05-01 63 views -2 likes 
    -2

    我想以下cURL命令轉換爲PHPPHP捲曲超時時,命令工作正常

    curl -X PUT -H 'Content-Type: application/json' -d '{"on":true,"bri":255,"sat":255,"hue":20000}' http://MYSITE:PORT/api/HASH/lights/1/state 
    

    我做了以下內容,但它只是超時。

    $data_json = '{"on":true,"bri":255,"sat":255,"hue":20000}'; 
    $url = "http://MYSITE:PORT/api/HASH/lights/1/state"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json); 
    
    $response = curl_exec($ch); 
    echo $response; 
    curl_close($ch); 
    
    +0

    問題已解決。我的託管服務提供商阻止了端口8078的請求。 – Bijan

    回答

    1

    可以設置捲曲超時像這樣

    curl_setopt($ CH,CURLOPT_CONNECTTIMEOUT,0); curl_setopt($ ch,CURLOPT_TIMEOUT,400); //秒內暫停

    您可能還想在php.ini中增加php超時

    +0

    我遇到的問題是curl命令正常工作。但是當我將它轉換爲PHP時,它不會像它應該那樣做。我的轉換是否存在問題? – Bijan

    0

    我會嘗試調試使用該技術的捲曲請求中提到here,這應該給你什麼捲曲正在做的更多信息。

    另外,如果你願意使用圖書館,我會建議使用Guzzle,這是有據可查的,並使這些類型的操作減少我的經驗痛苦。

    <?php 
    
    use GuzzleHttp\Client; 
    
    require 'vendor/autoload.php'; 
    
    $url = "http://jsonplaceholder.typicode.com/posts"; 
    $client = new Client(); 
    
    $body['title'] = "json guzzle post"; 
    $body['body'] = "carlton"; 
    $body['userId'] = "109109101"; 
    
    $res = $client->post($url, [ 'body' => json_encode($body) ]); 
    
    $code = $res->getStatusCode(); 
    $result = $res->json(); 
    
    var_dump($code); 
    var_dump($result); 
    
    相關問題