プロが教える店舗&オフィスのセキュリティ対策術

あるWebサイトのあるコンテンツ(Flash)をJavaで取得しています。

Javaから、
 URL url = new URL( "http://xxx/sample.swf" );
URLConnection conn = url.openConnection();
conn.connect(); ←ここで1分後に"connect timeout"になります。

・同じマシンのブラウザから"http://xxx/sample.swf"は表示できます。(レスポンス早い)
・タイムアウト値は1分に設定しています。(30秒でも2分でも30分でも×)
・conn.getInputStreamでも"connect timeout"になります。
・url.openStreamでも"connect timeout"になります。
・このサーバのFlash以外の、別のサーバのFlashは問題なく取得できます。

何か原因は考えられますでしょうか?
サーバ側でHTTPとIPの制限はしていません。
(ブラウザで見れるので↑の設定はあってると思うのですが・・。)

A 回答 (2件)

ブラウザから以外のアクセスを拒絶するサイトもありますし、またそんなサイトでもuser-agentを詐称すればjava.netで自作したプログラムでアクセス成功!の場合もあります。

setConnectTimeout()は試されましたか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

サーバ側のuser-agentの制限を調べてみたのですが、特に規制していませんでした。
タイムアウトの設定は30秒~30分まで試したのですがいずれもNGです。

リクエスト時の、サーバログを見たのですが、リクエスト自体来ていないようです。
ブラウザからは正常にみれるため、原因がわからない状態です・・・。

お礼日時:2007/11/28 09:30

> リクエスト自体来ていない


そうすると、常識的にはクライアント側のバグですね。
以下の、もっともシンプルなプログラムを動かしてみてください。
(このプログラムでリソースの取得ができることは、確認済みです。)
これでだめなら、サーバの不具合ってことになりますね。
当方、現時点ではどっちのコードも設定も見ていないので、一般的なことしか言えません。
-----------------------------------------------------
import java.io.*;
import java.net.*;

public class GetUrlResource{
static final int BUFF_SIZE = 4096;

public static void main(String [] args){
byte[] buffer = new byte[BUFF_SIZE];
String urlStr = "http://xxx/sample.swf";
String localFile = "sample.swf";

try{
URL url = new URL(urlStr);
InputStream is = url.openStream();
FileOutputStream os = new FileOutputStream(localFile);

getResource(is, os, buffer, BUFF_SIZE);

is.close();
os.close();
}
catch (MalformedURLException me){
me.printStackTrace();
}
catch (IOException ie){
ie.printStackTrace();
}
}

static void getResource(InputStream is, OutputStream os,
byte[] buffer, int bufsiz) throws IOException{
int n;

while ((n = is.read(buffer)) != -1){
os.write(buffer, 0, n);
}
}
}
----------------------------------------------------
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

当方も上記に似たクラスで実装しており、
別のサーバのコンテンツは取得可でした。

そこで色々調べてみたところ、途中のゲートウェイで、
送信リクエストを制限設定していたようでした。

設定を解除し、無事動くことを確認しました。
お騒がせしました。

お礼日時:2007/11/28 14:17

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