私はhttp-getを介してXMLファイルを読み取る小さなprogrammを作成しました。apache httpgetが例外なしで破損する
これはうまく動作しています。なぜなら、空の結果の
しかし、それはnullポインタを除き、いかなる例外なく破壊し続けるサーバー上の
私は、Apache HTTP libにを使用しています。
ここにクラスがあります。正確なポイントを追跡するために、番号が追加されました。ここでは動作が停止します。
public void get(String url, String user, String pass, File outfile) throws IOException
{
log.info("1");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "basic"),
new UsernamePasswordCredentials(user, pass));
log.info("2");
CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
HttpResponse response = null;
log.info("6");
InputStream content = null;
FileOutputStream outputStream = null;
try
{
HttpGet httpGet = new HttpGet(url);
log.info("3");
httpGet.addHeader("Content-Type", "text/xml");
log.info("4");
httpGet.addHeader("Accept", "text/xml");
log.info("5");
log.info("6");
log.info("7");
outputStream = new FileOutputStream(outfile);
log.info("8");
response = httpClient.execute(httpGet);
log.info("9");
log.info("response: {}", response);
log.info("10");
content = response.getEntity().getContent();
log.info("11");
log.info("content: {}", content);
log.info("12");
IOUtils.copy(content, outputStream);
log.info("13");
}
catch (Exception e)
{
log.error("", e);
}
finally
{
try
{
log.info("14");
log.info(String.valueOf(content));
content.close();
outputStream.close();
}
catch (IOException e)
{
log.error("Error while closing Streams", e);
}
}
}
ログスナップショットは以下のとおりです。私はすべての賢明なデータをマスクすることを試みたと私は何も
あなたが見ることができるように、数字は8後に停止し、最終的に14で再びブロックで開始を逃さなかった願っています。残りは欠けていて、私には分かりません。理由は何ですか?
使用されたURLには、ブラウザまたはcomandlineを介してアクセスできます。
ありがとう、それはトリックでした。その欠けているorg/apache/commons/codec/binary/Base64。しかし、面白いことに、これはサーバー上でしか起こっていません。 – Eardy
すぐに受け入れていただきありがとうございます。そして、あなたはちょうどupvote特権に達していいですね。私の答えでこれを行うことを練習することを自由に感じてください:-) – GhostCat