2016-05-31 6 views
1

私はLuaForWindows(最新バージョン)を使用しており、thisthisの回答と、lua-users.orgのmailinglistのすべてを読んでいます。これまでに(ほとんどの)サイトは301または302のいずれかでしか応答しませんでした。私は、マニュアルページからOpenGL 2.1リファレンスをダウンロードするサンプルバッチスクリプトを作成しました。luaSocket HTTPリクエストは常にリダイレクト(301または302)で応答します。

@ECHO OFF 

FOR /F "SKIP=5" %%# IN (%~fs0) DO lua -l socket.http -e "print(socket.http.request('https://www.opengl.org/sdk/docs/man2/xhtml/%%#.xml'))" 
GOTO:EOF 

glAccum 
glActiveTexture 
glAlphaFunc 
glAreTexturesResident 
glArrayElement 
glAttachShader 
glBegin 
glBeginQuery 
glBindAttribLocation 
glBindBuffer 

最も重要な部分はこれです:

print(require('socket.http').request('https://www.opengl.org/sdk/docs/man2/xhtml/glAccum.xml')) -- added glAccum so you can run it 

これは、常に他のランダムのページからダウンロードするときに301また、これは私に何が起こる返します。 (私はそう、私はリストを与えるカントそれらの点に注意してくださいいけないが、私はそれらのいくつかは、CloudFlareのを使用して見つけることが起こった。)

私はURLと、それは文句を言わないリダイレクトopenConnection()を使用してJavaで同等のダウンローダを記述する場合。

私は既にリダイレクトを手作業で設定しています(レフェラーやものを設定して)the 'generic' wayを使用しました。ほとんどのヒントは他の回答に記載されています。

答えて

1

socket.httpを使用していますが、https URLにアクセスしてください。 luasocketはHTTPSプロトコルを処理しないので、代わりにデフォルトポート80にリクエストを送信し、HTTPSリンクへのリダイレクト(同じリンク)を取得します。これは数回(URLが実際には変わらないので)続き、最後にluasocketはメッセージを生成することを断念します。

解決策は、install luasecにあり、要求を行うためにssl.httpsモジュールを使用することです。

+0

ありがとうございました!私がテストしたものはかなり古いものだったので、私はいつもhttpをテストしました。 Nowdays everyTHINGはhttps(または変換する)で、きちんと隠されたものは見逃しがちです。提案の中のhttpの最後にあるように。私も指摘する必要があります:http://stackoverflow.com/questions/10306489 and http://stackoverflow.com/questions/10360632 – tDwtp

関連する問題