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

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

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

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

3265閲覧

PHP file_get_content を使ってPOST送信

ryuuichi

総合スコア16

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2015/11/26 12:36

PHPで file_get_contentを使ってPOST送信をしたいです。

PHP

1 $url = 'http://coincheck.jp/api/exchange/orders'; 2//accesskeyは、入力済み 3 $data = array( 4 "accessKey" => "", 5 "market_buy_amount" => "1000", 6 "order_type" => "market_buy", 7 "pair" => "btc_jpy" 8 ); 9 $data = http_build_query($data, "", "&"); 10 $context = array( 11 "http" => array( 12 "method" => "POST", 13 "content" => $data 14 ) 15 ); 16 $html = file_get_contents($url, false, stream_context_create($context)); 17 return $html; 18

https://coincheck.jp/documents/exchange/api#order-opens

上記のAPIを使いたいのでやってみたのですが
いろいろ考えても解決できませんでした。
API自体を理解出来ていない面もあるので教えていただければと思います。

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

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

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

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

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

guest

回答2

0

ベストアンサー

file_get_contentsでPOSTデータ送信
公式サイト file_get_contents

ヘッダーが足りないようです。
上記を参考にもう少し工夫すれば送信出来るかと思います。
特にPOST送信はちゃんと送信する文字列長の数値まできっちり書く必要があるので面倒ですね。

しかし、「file_get_contents」は文字通りファイルを取得するという関数なので、
POSTで送信する事は仕様上は可能ですが、非常に気持ち悪いです。

余裕があればcurl等の代替関数も検討してみてください。

投稿2015/11/26 14:23

miyabi-sun

総合スコア21158

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

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

ryuuichi

2015/11/29 05:44

ありがとう御座います。 ヘッダーを追加しても解決しません。 APIについてですが Accesskeyの書く位置はあっていますか? file_get_contents(http://coincheck.jp/api/exchange/orders): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found と、いうエラーが帰って来ます。 これって"http://coincheck.jp/api/exchange/orders"にアクセスできてないってことですよね 私には、難しくて理解できないのですが api/exchange/ordersというのは、URLに書いて良いのでしょうか? それともarrayに含めるのでしょうか?
miyabi-sun

2015/11/29 07:54 編集

Rubyのサンプルを見たところ headers = { "ACCESS-KEY" => key, "ACCESS-NONCE" => nonce, "ACCESS-SIGNATURE" => signature } ヘッダーにこれらの値が必要のようですね。 そもそも、POSTに"accessKey"というキーで入っているのか 基本的にこういったパラメータのキーは大文字小文字区別するので 「ACCESS_KEY」かもしれないですし、「AccessKey」かもしれない、はたまた全部小文字のスネーク?このままのキャメル形式?…と様々な形式があるので確認してみましょう。 またそのAPIをよく見なおしてみると、 https://github.com/coincheckjp/coincheck-php …というPHPのライブラリが公開されていました。 こちらが使えるのならばライブラリを使用しては如何でしょうか?
ryuuichi

2015/11/29 10:31

そうですね ライブラリに関しては知っていましたが そのコードが何をしているのかが分からないので自分的には 完成しても、納得出来ないので使用していません。 あと、ライブラリを見て解決しなかったのもありますが・・・。 あと、POST送信する先はhttp://coincheck.jp/api/exchange/ordersで、あっているのでしょうか? そこも自分では分からないところなので・・・。
guest

0

file_get_contentsはファイルを読み込むものなのでpost送信とは全く関係ありません。

投稿2015/11/26 12:46

matsumoto

総合スコア590

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問