• 締切済み

coincheckのAPIの使い方【PHP】

coincheckのAPIの使い方が分かりません。 自分の資産の取得は出来ましたが新規注文等POSTするのが全然出来ません。 自分のPOST方法が間違えていると思うのですが 私のPOST方法はfile_get_contentsでPOST送信をしようとしています。 ですがRequestがうまく行って無いのかな?っと思います。 failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in というエラーが返って来ます。 Request方法や解決方法がわかる方いらっしゃいませんか? よければサンプルでコードを書いていただけるとうれしいです。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

HTTP/1.1 401 Unauthorizedですから、認証を通っていませんね。 >自分の資産の取得は出来ました そのときのcontext(file_get_contentsの第3引数)はどのように生成されましたか?資産取得でも認証は通していると思うのですが違うのでしょうか(それはそれで怖い)。

関連するQ&A

  • [PHP] AITalkの音声合成APIで困った

    file_get_contents の返り値が false で困っています!! Docomoさんがエーアイさんの音声合成APIを提供しています. エーアイの音声合成APIの中でも,「SSML」を利用しようとしています. ・ドコモさんのHP https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=70 ・SSMLについて https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=71#tag01 SSMLを利用しようとPHPで実装して実行するも file_get_contents でエラーになってしまいます. (エラー:failed to open stream: HTTP request failed! ) コードは以下のように記述しました. <?php // コード書く際に参考にしたサイト // http://www.d-labo.net/laboratory/php/7001.php // http://stackoverflow.com/questions/9412650/how-to-fix-411-length-required-error-with-file-get-contents-and-the-expedia-xml function post($url, $data) { if (!ini_get('allow_url_fopen')) throw new Exception("Not Allowed URL Open!"); //headersは仕様通りに記述したつもり $headers = array( 'Content-Type:application/ssml+xml', 'Accept:audio/L16', 'Content-Length:'.sprintf("%d",strlen($data)) ); //methodは必ずPOSTと仕様書にあった $stream = stream_context_create(array('http' => array( 'method' => 'POST', 'header' => implode("\n",$headers), 'content' => $data ))); //XXX: file_get_contentsの返り値が必ず false になってしまう return file_get_contents($url, false, $stream); } ////// usage sample ////// 申し訳ないのですが,APIKEYを第三者に提供することはできません. try { $url = 'https://api.apigw.smt.docomo.ne.jp/aiTalk/v1/textToSpeech?APIKEY=XXXXXXXXXX'; $xml = '<?xml version="1.0" encoding="utf-8" ?><speak version="1.1"><voice name="nozomi">エーアイの音声合成エンジンによる音声です。</voice><break time="1000ms" /><voice name="seiji">エーアイの音声合成エンジンによる音声です。</voice></speak>'; $hoge = post($url,$xml); var_dump($hoge); } catch (Exception $e) { var_dump($e); } ?> 以上のコードが記述されたファイル(text_to_voice.php)をターミナルで実行 $ php text_to_voice.php Warning: file_get_contents(https://api.apigw.smt.docomo.ne.jp/aiTalk/v1/textToSpeech?APIKEY=XXXXXXXXX): failed to open stream: HTTP request failed! in text_to_voice.php on line 26 bool(false) 以上になります.どうやったら file_get_contents の返り値が false じゃなくなるのか知りたいです. よろしくお願い致します. 画像にはリクエストヘッダーの内容とAPIのURLが記述されており, 画像にあるのを参照しました.

    • ベストアンサー
    • PHP
  • mixi graph apiのログイン状況の取得

    xamppの1.7.7(Apache 2.2.21/PHP 5.3.8)上でmixi graph apiのテストをしています。 使用言語はPHPです。 developerサイトのpeopleAPIに関するページは下記URLです。 http://developer.mixi.co.jp/connect/mixi_graph_api/mixi_io_spec_top/people-api/#toc-5 # アクセストークンを抽出 $my_array = json_decode($atdata,true); $at = $my_array["access_token"]; # ログイン状況の取得 $people_api_url = "http://api.mixi-platform.com/2/people/@me/@self?fields=lastLogin?oauth_token=".$at; $people = file_get_contents($people_api_url); echo '<br />'.$people; 上記のfile_get_contentsに対して、failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Requestが出てしまいます。 ちなみにscopeの指定は、 $url = $authorization_url."?client_id=".$consumer_key."&response_type=code&scope=r_profile_last_login&display=pc"; で行なっています。 scopeをr_profileにして、 $people_api_url = "http://api.mixi-platform.com/2/people/@me/@self?oauth_token=".$at; のように変えると、同じpeopleAPI内の友人一覧の取得に関しては取得できるため、scopeの指定が間違っているのだと思うのですが…… 何が間違っているのかわかりません。 PHP初心者でまだわからないことだらけですが、もし何か記述方法の間違い等少しでもわかる方がいれば教えて頂けると幸いです。

    • ベストアンサー
    • PHP
  • 「file_get_contents」で「HTTP/1.0 504 C

    「file_get_contents」で「HTTP/1.0 504 Connection Timed Out」 ini_set('default_socket_timeout',300); ini_set('max_execution_time',300); 上記のように書いた上で、ちょっと重いAPI(XML)を file_get_contentsで取得するプログラムをcrontabで動かし、 結果(成功か失敗か、出力結果等)がメールで送られるようになっています。 毎日午前1時0分に実行されるようにしているのですが、 二日に1回くらいの頻度で午前1時3分に以下のように書かれたメールが届きます。 Warning: file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 504 Connection Timed Out in /home/***/***/***.php on line 36 この504エラーというのは、PHPの書き方しだいで回避できるものなのでしょうか? default_socket_timeoutは300秒(5分)になっているので、 1時3分にメールが送られてきているということは、 PHPがタイムアウトと判断する前に終了しているということでしょうか? サーバー側が504エラーという結果を返しているということですか? よろしくお願いします。

    • 締切済み
    • PHP
  • PHP stream_context_creat

    今日は、 境内のメソッドについて質問があります。 以下のスクリプトについてですが、 <?php //POSTする送信データ $postData = array ( "key_01" => "POST送信データ01&", "key_02" => "POST送信データ02&", ); //送信するデータをURLエンコードする $postData = http_build_query($postData); $header = array( "http" => array( //(1) "method" => "POST", //(2) "header" => "Content-type: application/x-www-form-urlencoded\r\nuser_name: testuser_name", //(3) "content" => $postData //(4) ) ); //上記headerという変数からHTTPリクエストのストリームを作成する $request = stream_context_create($header); $res = file_get_contents("http://localhost/stream02.php",false,$request); print $res; 上記のようなスクリプにおける、ストリームというのはいわゆるクライアント側から サーバー側へ送信するHTTPリクエストと同義のものでしょうか? であればHTTPレスポンスのようにそのヘッダーの中身を取得する getallheaders()というような感じで、実際に、送信されるHTTPリクエストの 中身を視認したいのですが可能でしょうか? 以下サイトの http://www.tohoho-web.com/ex/http.htm HTTPサンプルのように取得したいのですが・・・。 また、冒頭に記述したスクリプトですが php.iniのallow_url_fopenの箇所がonになっていないと実行できないことは 確認したのですが、もし仮にallow_url_fopenがOffになっていた場合、 上記のようにストリームと呼ばれるものを使ってHTMLフォーム以外でPOSTリクエスト したい場合は何か方法があるのでしょうか? 通常であればPEARのHTTP_Requestとかで処理するかと存じますが、 PHPの組み込み関数のみでやる場合、他に方法ってありますか? 識者の方ご教授ください。

    • ベストアンサー
    • PHP
  • HTMLソースの取得

    現在,wikipedeaの解析を行っています. wikipedeaの履歴のソースコードをf取得したいのですが,以下のようなエラーが出て取得できません. <エラー> Warning: fopen(http://ja.wikipedia.org/w/index.php?title=%E3%82%A2%E3%83%8B%E3%83%A1&action=history") [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in… 何かいい方法はないでしょうか. よろしくお願いします.

    • ベストアンサー
    • PHP
  • WikipediaのPHPによるAPIについて

    http://wikipedia.simpleapi.net/ にサンプルが出ていて、それを利用しようと思っています。 --以下サンプル <?php // キーワード指定 $keyword = "多田富雄"; // APIのURL $url = "http://wikipedia.simpleapi.net/api?keyword=".urlencode($keyword)."&output=php"; // データを取得 $data = file_get_contents($url) ; // PHPシリアライズパーサーを利用して解析し、配列に入れる $array = unserialize($data); // 配列をforeachで表示するデモ print "<H1>Wikipedia情報</H1>"; foreach ($array as $key => $value) { print "<a href=\"".$value[url]."\"><strong>".$value[title]."</strong></a>\n<br/>". $value[body] ."<hr/>\n\n"; } ?> --サンプル以上 実際のwikipediaで"多田富雄"を入力し調べた時と、上記サンプルを起動してprintした時では内容が異なります。 (上記サンプルの方がかなり少ない) unserialize関数もしくはfile_get_contents関数か、別の要因かよくわかりません。 ご経験のおありの方、ヒントだけでもいただけると助かります。 なお、私のphp経験は50-100時間程度、環境はXP,Apache2,php5です。

    • ベストアンサー
    • PHP
  • Amazon APIをPHPでアクセスすると403エラーになる

    Amazon APIをPHPでアクセスすると403エラーになる Amazon API(Product Advertising API)を利用しようと、アフィリエイトと共にアカウント作成し、 アクセスキーとシークレットキーを取得しました。 そして、WEBで色々検索し、署名認証用のPHPプログラムを発見して、ローカルでテストしているのですが、403エラーが表示され、動作してくれません・・・。 hash_hmacに関しては、PHPのバージョンが5.12以下ですので、下記サイトの関数を代用しています。 http://www.revulo.com/blog/20090811.html //認証用関数URL http://amazon.ringoon.jp/rest_test/pa_sig.txt ========================================= プログラム require_once("pa_sig.php"); $public_key = "***********"; $url = "http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=".$public_key."&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes,Offers,Images,Reviews&Version=2009-01-06&Timestamp=2009-01-01T12:00:00Z&AssociateTag=**********"; $url = add_signature($url); $contents=file_get_contents($url); print_r($contents); ========================================= 出力結果 Warning: fopen(http://webservices.amazon.co.jp/onca/xml?AWSAccessKeyID=AKIAJSK7CGT4HO2QTPQA&AssociateTag=aimtaku-22&ItemId=4886487467&Operation=ItemLookup&ResponseGroup=small&Servie=AWSECommerceService&Timestamp=2010-10-04T05%3A33%3A42Z&Version=2009-01-06&Signature=d8d9T3g7ThM%2B%2BJKGVsXsCgaqxoAigqAuH7BDhA1mXgM%3D) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in **************\a_login.php on line 37 ========================================= 開発環境 WinXP PHP5.02 Apache 2.0.58 宜しくお願い致します。

    • 締切済み
    • PHP
  • file_get_contentsについて

    file_get_contentsについて教えてください。 現在あるサイトを定期的にチェックし、特定の文字列が存在したら メールを送るというものを作っています。 そのサイトチェックの際にfile_get_contentsを使って、 サイトの中身をチェックしています。 $tmpPage = file_get_contents('~.cgi?aa=bbb'); 上記の用に記述して$tmpPage内の文字列をチェックすることで 実現できているのですが、本来このサイトは携帯向けのページのため ヘッダー情報を付加して下記のように記述しています。 $opts = array( 'http'=>array( 'method'=>'GET', 'header'=>'Host :www.XXXXX.jp' . PHP_EOL . 'User-Agent :KDDI-XXXXXXXXXXXX' . PHP_EOL . 'x-up-subno :XXXXXXXXXXXX.ezweb.ne.jp' ) ); $context = stream_context_create( $opts ); $tmpPage = file_get_contents( '~.cgi?aa=bbb', false, $context ); このように記述すると Warning: file_get_contents('~.cgi?aa=bbb') [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found とエラーが返ってきてしまいます。 アクセスするURLをYahooやGoogleにすると問題なく動いているので、 問題なのはチェックするサイトのURLが「XXX.cgi?aa=bbb」と なっているのがダメなのではないかと思っています。 アクセス先のURLが単純な「.html」ではないまたは、ヘッダー情報を 付加する場合、file_get_contentsの使い方が変わるのでしょうか。 ご存知の方がいらっしゃれば是非教えてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • file_get_contents使用時のエラーについて

    file_get_contents使用時に下記のようなエラーが出ました。 ===エラーの内容=== PHP Warning: file_get_contents(<取得するURL文字列>): failed to open stream: HTTP request failed! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> in <エラーの起きたファイル名> on line 32 ===概要=== yahooの検索apiを利用して検索結果を取得しようとしています。 別のサイトでは同様の構文で取得できているので、書き方に問題はないと思うのですが、サーバやphpの設定は多少違う部分があるかもしれません。 いろいろ探してみましたが、原因がわかりません。 取得するURLは直にたたくとちゃんと見ることができます。 心当たりがある方、補足説明が必要な方、ご回答よろしくお願いします。

    • 締切済み
    • PHP
  • Java(Servlet,JSP)を使用してあるURLにHTTPリクエスト(POST)を送信する方法

    あるWeb APIを使用したWEBアプリケーションを作成しています. JavaのServletやJSPで実装していますが,サンプルではGETでリクエストを送る方法だけが紹介されていました. APIがPOSTに対応しているので,POSTでリクエストを送信しようと思います. サンプルは以下のようになっていましたが,POSTでリクエストを送信する場合,どう変更すれば良いでしょうか? URL url = new URL("http://xxxxxx.xx/xx/?q=" + URLEncoder.encode(request.getParameter("data"), "UTF-8")); URLConnection con = url.openConnection(); InputStream stream = con.getInputStream(); リクエストは日本語を含むデータをパラメータに含める予定です.

    • ベストアンサー
    • Java

専門家に質問してみよう