2016-10-28 25 views
-1

以前はcURLを使ったことが一度もありませんでした。 JSON結果を返すためにRest APIを使用するWowzaサーバーにHTTP GETリクエストを作成しようとしています。 URLは実際にXML形式で返しますが、Wowzaのサポートによると、私が行ったようにコンテンツタイプを追加することでJSONでレスポンスを得ることができます。Wowza Rest APIからcURLでHTTP GETリクエストを作成する

$url = 'http://DOMAINNAME:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/instances/_definst_/incomingstreams/ncopeland'; 

$cURL = curl_init(); 

curl_setopt($cURL, CURLOPT_URL, $url); 
curl_setopt($cURL, CURLOPT_HTTPGET, true); 

curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json;charset=utf-8', 
    'Accept: application/json' 
)); 

$result = curl_exec($cURL); 
$result = json_decode($result,true); 

curl_close($cURL); 

これが応答である必要があります。

{ 
    "serverName": "_defaultServer_", 
    "sourceIp": "ncopeland", 
    "isPTZEnabled": false, 
    "applicationInstance": "_definst_", 
    "name": "ncopeland", 
    "isRecordingSet": false, 
    "isStreamManagerStream": true, 
    "isPublishedToVOD": false, 
    "isConnected": true, 
    "ptzPollingInterval": 2000 
} 

代わりに、応答が返され、このようにフォーマットされています。

{"serverName":"_defaultServer_","sourceIp":"ncopeland","isPTZEnabled":false,"applicationInstance":"_definst_","name":"ncopeland","isRecordingSet":false,"isStreamManagerStream":true,"isPublishedToVOD":false,"isConnected":false,"ptzPollingInterval":2000} 

これらを使用可能な変数にするにはどうすればよいですか。本当に私が応答から必要としているのは "name"と "isConnected"なので、DBのフィールドを更新することができます。本当に私が応答から必要としているのは "name"と "isConnected"なので、DBのフィールドをこのように更新することができます。

Array (
[serverName] => _defaultServer_ 
[sourceIp] => ncopeland 
[isPTZEnabled] => false 
[applicationInstance] => _definst_ 
[name] => ncopeland 
[isRecordingSet] => false 
[isStreamManagerStream] => true 
[isPublishedToVOD] => false 
[isConnected] => false 
[ptzPollingInterval] => false 

) 

私は$ obj変数を配列として使うことができます。

echo $obj['name']; 
echo $obj['isConnected']; 

答えて

0

私のコードには何も問題はありませんでした。 Bluehostから使用していたパッケージが、私がcURL経由でhttpリクエストを作成するために必要としていたポートをブロックしていることを、私のホストされたサーバーソリューションで確認してください。私は専用のIPにアップグレードして、必要なポートを手に入れることができました。

1

私は何が不足しているか分かりません。すべてがあなたのコードから意図どおりに機能しているはずです。 jsonが改行なしでデータを返すという事実は、後でデータがどのように使用されるかを変更しません。

$jsondata = '{"serverName":"_defaultServer_","sourceIp":"ncopeland","isPTZEnabled":false,"applicationInstance":"_definst_","name":"ncopeland","isRecordingSet":false,"isStreamManagerStream":true,"isPublishedToVOD":false,"isConnected":false,"ptzPollingInterval":2000}'; 

$result = json_decode($jsondata,true); //is array 
var_dump ($result['serverName']); 
var_dump ($result['isConnected']); 

さらに、ブール値をエコーすることはできません。

私の意見では、オブジェクトを使用する方が配列よりも単純です。

$jsondata = '{"serverName":"_defaultServer_","sourceIp":"ncopeland","isPTZEnabled":false,"applicationInstance":"_definst_","name":"ncopeland","isRecordingSet":false,"isStreamManagerStream":true,"isPublishedToVOD":false,"isConnected":false,"ptzPollingInterval":2000}'; 
$result = json_decode($jsondata); 


var_dump ($result->serverName); 
var_dump ($result->isConnected); 
関連する問題