1

次のコードがあります。ローカルの開発サーバーではまったく問題なく動作しますが、展開サーバーにアップロードすると、常にファイルが見つからないという例外が発生します

String urlStr = "http://" + getContext().getRequest().getServerName() +
getContext().getServletContext().getContextPath() + "test.action";
URL url = new URL(urlStr);
InputStream input = url.openStream(); //Error always occurs here, it gives me the correct URL but it says file not found.

誰でもこれで私を助けることができますか?

4

2 に答える 2

0

HTTP URLなので、正しい方法は次のようになります。

String urlStr = "http://" + getContext().getRequest().getServerName() +
        getContext().getServletContext().getContextPath() + "test.action";
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == HttpURLConnection.HTTP_ACCEPTED) { 
    InputStream input = conn.getInputStream();
}
于 2013-03-06T14:35:47.943 に答える
0

おそらく @deadlock さんのコメントがこれを解決する鍵になると思います。

FileNotFoundExceptionリモート サーバーが 404 Not Found 応答を送信しているため、エラーが発生しています。最も可能性の高い説明は、間違った URL を使用して接続しようとしているということです。接続を試みる前に、URL 文字列を出力してください。


すべての証拠は、サーバーが「404 Not Found」応答を送信しているという事実を示しています...コードの両方のバージョンに対して. これは通常、URL が間違っていることを意味します。しかし、それが他のものである可能性もあります:

  • Java とブラウザのケースで異なるプロキシを使用している可能性があり、その結果、Java のケースが URL を認識しないサーバーに到達する可能性があります。

  • サーバーがアンチ Web スクレイピング メカニズムを実装していて、404 応答を送信していることが考えられます。

于 2013-03-06T14:44:24.613 に答える