質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

715閲覧

ConoHa APIを使用してドメイン一覧を取得、表示したい。

wakuwaya

総合スコア11

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2017/08/19 01:40

ConoHa APIを使用してドメイン一覧を取得しようとしたのですが取得した結果何も表示されません。

###該当のソースコード

PHP

1 function getAnthToken() { 2 //トークン取得 3 $url = "https://identity.tyo1.conoha.io/v2.0/tokens"; 4 5 $headers = array( 6 "Accept: application/json" 7 ); 8 9 $request = array( 10 "auth" => array( 11 "passwordCredentials" => array( 12 "username" => '******', 13 "password" => '******' 14 ) 15 ), 16 "tenantId" => "******" 17 ); 18 $ch = curl_init(); 19 20 curl_setopt($ch, CURLOPT_URL, $url); 21 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 22 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 23 curl_setopt($ch, CURLOPT_POST, true); 24 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($request)); 25 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 26 27 $token_result = curl_exec($ch); 28 $token = json_decode($token_result); 29 30 curl_close($ch); 31 32 return $token -> access -> token -> id; 33 } 34 35 function getDomainLists($token_id) { 36 //ドメイン一覧取得 37 $url = "https://dns-service.tyo1.conoha.io/v1/domains"; 38 $header = array( 39 "Accept: application/json", 40 "X-Auth-Token: {$token_id}" 41 ); 42 43 $ch = curl_init(); 44 45 curl_setopt($ch, CURLOPT_URL, $url); 46 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 47 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 48 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 49 50 $domain_result = curl_exec($ch); 51 $domain = json_decode($domain_result); 52 var_dump($domain); 53 curl_close($ch); 54 } 55 56 $token = getAnthToken(); 57 getDomainLists($token);

getAnthToken()を実行した時点ではトークンIDを取得できており
getDomainLists()を実行してもエラーは表示されませんが、一覧も表示されません。

getDomainLists()の中でどこかが間違っていると思うのですがどこが違っているかがわかりません。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/08/19 03:53

ConoHaコントロールパネルで、 DNS は、表示されていますか?
wakuwaya

2017/08/19 05:41 編集

ありがとうございます。 確認しましたところ表示されていました。 また、curl_getinfoを使用してCURLINFO_HTTP_CODEを表示したところ 「401 – Access Denied」が取得されていました。 今回の事象に関して関係あるでしょうか。
wakuwaya

2017/08/19 06:41

ありがとうございます。curlのコマンドラインからはドメイン一覧を取得したら取得できました。考えられるのはトークンが有効になるまでには時間がかかることなのですが、こういうことはあるのでしょうか。
guest

回答1

0

ベストアンサー

2箇所の修正が必要なようです。

https://www.conoha.jp/docs/paas-dns-list-domains.html

JSON

1{ 2 "auth": { 3 "passwordCredentials": { 4 "username": "ConoHa", 5 "password": "paSSword123456#$%" 6 }, 7 "tenantId": "487727e3921d44e3bfe7ebb337bf085e" 8 } 9}

上記のJSONリクエストを送付するためにはgetAnthToken関数を例えば下記のように修正します。
微妙な違いですが、そのためにテナントIDを認識できていないようです。
サンプルのリクエストと見比べてみてください。

PHP

1 $request = array( 2 "auth" => array( 3 "passwordCredentials" => array( 4 "username" => '******', 5 "password" => '******' 6 ), 7 "tenantId" => "******" 8 ), 9 );
  • 修正前
{"auth":{"passwordCredentials":{"username":"******","password":"******"}},"tenantId":"******"}
  • 修正後
{"auth":{"passwordCredentials":{"username":"******","password":"******"},"tenantId":"******"}}

もう1点は細かいところで転記ミスかもしれませんが、getDomainLists関数内の変数名が$headerと$headersで異なっています。

PHP

1$headers = array( 2 "Accept: application/json", 3 "X-Auth-Token: {$token_id}" 4 ); 5

投稿2017/08/21 11:24

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakuwaya

2017/08/21 12:00

回答ありがとうございます。 記載箇所を修正したところドメイン一覧を取得することができました。 ありがとうございました。 getDomainLists関数内の記載の件もありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問