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

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

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

Cygwinは、Unixのような環境を、Windows上で構築させるコマンドラインインターフェースです。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

5888閲覧

wgetでリクエストが中止してしまうが、原因が解らない。

usugita_san

総合スコア226

Cygwin

Cygwinは、Unixのような環境を、Windows上で構築させるコマンドラインインターフェースです。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

3グッド

2クリップ

投稿2016/03/14 06:50

ファイルをダウンロードするAPIを作成しました。
以下のようなURLをブラウザで叩いて、ダウンロードできることを確認しました。

http://127.0.0.1/download-sample.aspx/key/1234567890

これをwgetで実行しました。成功しました。

$ wget http://127.0.0.1:80/download-sample.aspx/key/1234567890 --2016-03-14 15:36:38-- http://127.0.0.1/download-sample.aspx/key/1234567890 127.0.0.1:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 236154 (231K) [audio/x-flac] `1234567890' に保存中 1234567890 100%[========================================================================================================================================>] 230.62K --.-KB/s in 0.01s 2016-03-14 15:36:42 (16.7 MB/s) - `1234567890' へ保存完了 [236154/236154]

さてここからが疑問なのです。
wgetにRangesのヘッダを加えて、部分的なダウンロードを行おうとすると、失敗するのです。
-tオプションを付与しているのは、再施行を延々と繰り返してしまうからです。

$ wget http://127.0.0.1:80/download-sample.aspx/key/1234567890 --header='Range: bytes=0-3000' -t 1 --2016-03-14 15:39:27-- http://127.0.0.1/download-sample.aspx/key/1234567890 127.0.0.1:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 206 Partial Content 中止しました。

このWebアプリはWindows Azureのエミュレータで動かしているのですが、ログを確認すると、アクセスログは以下のようになっていました。

2016-03-14 06:39:28 W3SVC1273337584 PC-0123 127.255.0.0 GET /download-sample.aspx/key/1234567890 - 81 - 127.0.0.1 HTTP/1.1 Wget/1.17.1+(cygwin) - - 127.0.0.1 206 0 0 3307 214 1240

エラーではなく、206というステータスで正しく終了しているように見えるのです。
Webアプリをデバッグしましたが、例外は発生しておりません。
このようなとき、原因をどう調べればいいのかが解りません。wgetの-vオプションをつけても出力結果は変わりません。

一応ブラウザではダウンロードできるので、wget側の問題なのかとも思うのですが、確証が持てません。
どなたか、原因について心当たりは無いでしょうか。

hato_pato, toshi_yama, ikuwow👍を押しています

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

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

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

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

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

guest

回答3

0

wgetではどうもrangeオプションを使うと正しくとれないようなバグがあるようです。
かなり昔からのようでした。
リンク内容

投稿2016/03/14 07:25

toshi_yama

総合スコア133

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

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

usugita_san

2016/03/14 07:33

全然気づかなかったです。てっきり設定の問題なんじゃないかと思ってました。 ありがとうございます。
guest

0

ベストアンサー

詳しいことはわかりませんが、Wgetで通常通りダウンロードできてるのであれば、クライアントとサーバー自体には問題はないとおもいます。

また、206はレンジリクエストの際のコードになるため、サーバー側で206が正しく返っていればクライアント側もレンジリクエストで送信しそのレスポンスもサーバー側で返しているという事になるとおもいます。

Wgetのレンジリクエストは昔から問題があるため出来れば別のCurlなどを使ってためしてみてはどうでしょうか?

恐らくうまくいくと思います

http://savannah.gnu.org/bugs/?20416

あとはサーバー側でレンジリクエストで必須のレスポンスヘッダをAPIが返却しているかどうか確認いただくことをお勧めします。

投稿2016/03/14 07:20

編集2016/03/14 07:22
ashly

総合スコア119

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

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

usugita_san

2016/03/14 07:55

curlでうまくいきました。 ありがとうございました。
guest

0

投稿2016/03/14 07:15

hato_pato

総合スコア215

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

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

usugita_san

2016/03/14 07:29

下手に考えずに「wget range 」でググればでてきたんですね・・・。 ありがとうございます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問