現在apachを立てて、phpでkintoneアプリのデータを取得しようとしています
queryを指定しないと正常にデータが取得できるのですが、queryを指定するとエラーが発生してしまいます
ログを見る限り、「&query=・・・」の部分が「&apm;query=」に自動変換されてしまい、正しく処理ができない状態です
色々調べてみたのですが、解決策が見つからず
ご教授頂けると幸いです
ソースコードは下記のとおりです
<?php
//画面上で入力された情報を基に、商品アプリからレコードを取得し、値を返す
$query = $_POST['query'];
$subdomain = "hogehoge";//サブドメイン
$token = "rpSHKG97BodWNc5QfvVkUagxtaRMLXCalaDNB6gk";//商品アプリのAPIトークン
$appId = "8";//商品アプリのアプリID
$url = 'https://'.$subdomain.'.cybozu.com/k/v1/records.json?app='.$appId."&query=".$query;
$subdomain = "1line";//サブドメイン
//サーバ送信するHTTPヘッダを設定
$options = array(
'http'=>array(
'method'=>'GET',
'header'=> "X-Cybozu-API-Token:".$token."\r\n"
)
);
$buildQuery = http_build_query(array("app" => $appId,"query" => $query), "", "&");
//コンテキストを生成
$context = stream_context_create( $options );
// サーバに接続してデータを貰う
$contents = file_get_contents( 'https://'.$subdomain.'.cybozu.com/k/v1/records.json?'.$buildQuery, FALSE, $context );
$data = json_decode($contents, true);
echojson_encode($data["records"]);
?>
3件のコメント
oota様
お世話になっております。
cstapの江田と申します。
ご提示いただいたコードのように、http_build_query()の第三引数(arg_separator)を指定しているのであれば問題ない気がしますが、何故でしょうね…
htmlspecialchars_decode()でデコードしても同じエラーが出ますか?
$contents = file_get_contents( 'https://'.$subdomain.'.cybozu.com/k/v1/records.json?'.htmlspecialchars_decode($buildQuery), FALSE, $context );
oota様
お世話になっております。
因みに、エラーログはどのように確認されていますか?
エラーが出たページについてブラウザからソースを確認されているのであれば、エラーメッセ―ジの特殊文字をエスケープして表示しているだけなので、実際に「&」を「&」に変換してリクエストしてはいないと考えられます。
queryの記述自体に誤りがある可能性はございませんか?
江田様
お世話になります
ご教授頂き有難うございます
ご指摘の通り、queryの指定方法が誤っておりました...
無事APIの処理が成功し正常にデータが取得できたことを確認できました
ありがとうございました!