javaでpdfファイルをダウンロードするリクエストを投稿しようとしています。私が使用している-メソッドが変更された原因を修正しようとしています-他の誰かのコードと、私が見たところでは、Webサービスを介してpdfファイルを要求する前に、コンテンツタイプのチェックが行われます. 要求されたコンテンツ タイプに問題がない場合は、pdf ファイルをダウンロードするサービスが呼び出されます。
これは、コンテンツ タイプをチェックするメソッドです。
public boolean checkContentType(String serviceName, Map<String, String> params, String contentType) {
params.put(PARAM_SERVICE, serviceName);
if(log.isDebugEnabled()) {
log.debug("checkContentType for serviceName: " + serviceName + " - Params: " + params + " - contentType: " + contentType);
}
HttpClient httpclient = new HttpClient();
GetMethod get = new GetMethod(basicUrl);
get.setQueryString(ParameterUtil.getValuePairs(params));
log.info(get.getQueryString());
try {
httpclient.executeMethod(get);
if (get.getStatusCode() == HttpStatus.SC_OK) {
String respContentType = get.getResponseHeader("Content-Type").getValue();
log.info("Request Content type [" +contentType + "] is not in response content type: [" + respContentType + "]");
log.info(String.valueOf(contentType != null));
log.info(String.valueOf(StringUtils.containsIgnoreCase(respContentType, contentType)));
return contentType != null && StringUtils.containsIgnoreCase(respContentType, contentType);
} else {
log.error("Response status code KO: [" + get.getStatusCode() +"] from url: " + basicUrl + " with querystring: " + get.getQueryString());
}
} catch (Exception e) {
log.error("Unable to get http response from url: " + basicUrl + " with querystring: " + get.getQueryString() + ". Ex Msg:" + e.getMessage());
} finally {
get.releaseConnection();
}
return false;
}
Content-type が 'pdf' の場合、2 番目の条件で false になりますが、どの Content-type を設定する必要があるかを知るにはどうすればよいですか? このログを取得します: Request Content type [pdf] is not in response content type: [text/plain;charset=UTF-8]
.
また、コンテンツ タイプのチェックをスキップして、すぐに PDF を要求しようとしましたが、しばらく待った後、開くことができない 16 KB の PDF が表示されます。コンテンツ タイプを text/plain;charset=UTF-8 に設定しようとしましたが、それでもログが表示されます。
PDFをダウンロードしているのでPDFではないでしょうか、それともPDFコンテンツタイプを期待するコードのどこかに設定する必要がありますか?