電子書籍の厳選無料作品が豊富!

こんにちは。今回は、post形式のhttpヘッダを教えて頂きたいと思います。

ある画像共有サイト(BL関係ですので、actionのURLを参照する時は気を付けてください)で、ZIPファイルダウンロードボタンが存在しています。

ボタンを押すと、zipファイルがダウンロードされます。これをhttpヘッダを通して、ダウンロード出来ないかを考えています。

get方式ですと、当然urlが表示されますが、post形式ではその確認が出来ません。
そこで、実際にhtml構造を調べて自分で、命令文を作ってみようと考えたのですが、どうもうまくいきません。
zipファイルダウンロードボタンは、以下のsubmitで送信されています。

自分としては、

http://b-share.net/download/?post_id=7201&downlo …ダウンロード

と考えたのですが、データが見つかりませんと返答されてしまいます。

何か基本的な勘違いをしているのかも知れませんが、どうかご教授頂ければと思います。

<form action="http://b-share.net/download/" method="POST" class="__web-inspector-hide-shortcut__">
<input type="hidden" name="post_id" value="7201">
<ul class="dl">
<li class="zip"><input type="submit" name="download_type" value="ZIPダウンロード" onclick="ga('send', 'event', 'single_pc', 'download', 'zip');"></li>
<li class="pdf"><input type="submit" name="download_type" value="PDFダウンロード" onclick="ga('send', 'event', 'single_pc', 'download', 'pdf');"></li>
</ul>
</form>

質問者からの補足コメント

  • どう思う?

    つまり、post形式の命令を送る必要があるということですね。この場合、サーバーに対してどのような命令を送ればよろしいのでしょうか?
    postはgetと異なるということは理解していますが、そうなると、url等で情報を引き出す方法は不可能ということになるのでしょうか?
    その場合、どのような引出し方法がありますか?
    具体例を頂けると助かります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/04/08 10:52

A 回答 (2件)

No.1です。



> つまり、post形式の命令を送る必要があるということですね。

 POSTで送っている変数と変数値をGET型式で送って「データが無い」となったのでしたらそういうことでしょう。

> この場合、サーバーに対してどのような命令を送ればよろしいのでしょうか?

 命令ではなくPOST型式で送るという事です。
 つまりURLの後ろに付加するのではなくHTTPの通信文の本体にPOST型式で入れるということです。
 それをWebブラウザから送るには、結局のところ質問に書かれていたFORMを含むHTTPファイルを作成し、それをWebブラウザで表示してSubmitするしかないでしょう。
 HTTPの通信規格を理解し、それを行うソフトを自作されるのでしたら別です。


> postはgetと異なるということは理解していますが、そうなると、url等で情報を引き出す方法は不可能ということになるのでしょうか?
> その場合、どのような引出し方法がありますか?

 すみません。
 これは何を言われているのか理解できません。(_ _;;
 サーバ側の話をされていますか? それともWebブラウザ側の話をされていますか?
 前者の場合、GETパラメータは環境変数QUERY_STRINGに入っており、POSTパラメータは標準入力で取り出せます。Javaなど一部の言語ではこの違いを吸収する機能が言語の実行環境として提供されているので、「変数取り出し」の命令を使うと受け取れる仕組みになっています。
 サーバ側のプログラムがGETとPOSTの違いによってWebブラウザ側から送られて来るパラメータの取り出し方が異なる言語を使って実装されいたPOSTで受けるプログラムの場合または、POSTで送られて来たことをチェックしているプログラムの場合、GETで送ってもサーバ側のプログラムはパラメータを受け取れない(チェックしている場合は「受け取らない」と表現が正しい)です。

 具体的にGETとPOSTで取り出し方がどう違いかは、例えばC言語を見ると一番わかりやすいでしょう。Perlもそうだと思います。(最新のPerlは意識せずに済むライブラリが有ったかな?)PHPも入る変数が違ったように記憶します。
 「○○ GETパラメータ 取得」(○○はC言語やPerl等の言語名)といった適当なキーワードで検索すると解説サイトがいろいろ見つかると思います。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます。勉強の糸口が見つかりました。

お礼日時:2016/04/08 11:28

サーバ側でこの要求を受けるプログラムがJavaで実装されている場合はGETとPOSTの違いを意識しませんが、そうでない場合はパラメータの取り出し方法がGETとPOSTで異なります。

ですのでPOSTで送られて来ることを当てにして実装しているプログラムに対してGETで送っても認識されず「データが無い」となります。

参考まで。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!