我有一個服務部署在Heroku中,產生一個PDF文件輸出。當我點擊瀏覽器中的URL時,我可以下載pdf文件(我不提示保存(按照我的要求),它會自動保存到代碼中的定義路徑中)。因此服務已經啓動並可用。但是當我使用HttpURLConnection訪問它時,我得到了404錯誤。 。任何人都可以幫我解決這個問題嗎?獲取404 HttpURLConnection
以下是我訪問的鏈接: http://quiet-savannah-7144.herokuapp.com/services/time/temp
這裏的服務代碼,部署在Heroku的服務器:
@jawax.ws.rs.core.Context
ServletContext context;
@GET
@path("/temp")
@Produces("application/pdf")
public Response getPdf() throws IOException{
InputStream is = context.getResourceAsStream("/static/temp.pdf");
ResponseBuilder res = Response.ok(is);
res.header("Content-Disposition","attachment; filename=temp.pdf");
return res.build();
}
注:我有我的位置webapp的文件/靜態/ TEMP .PDF
客戶端代碼如下:
try {
URL url = new URL("http://quiet-savannah-7144.herokuapp.com/sevices/time/temp");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/json");
int code = conn.getResponseCode();
System.out.println("code>>"+code+"<<");
if (conn.getResponseCode() == 200) {
System.out.println("*************************done****************************");
InputStream inputStream = conn.getInputStream();
OutputStream output = new FileOutputStream("D:/copyOfTest.pdf");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
output.close();
} else {
Scanner scanner = new Scanner(conn.getErrorStream());
while(scanner.hasNext())
System.out.println(scanner.next());
scanner.close();
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我試着用PDF和X-PDF內容類型,如下圖所示,沒有什麼工作
conn.setRequestProperty("Content-Type", "application/pdf");
conn.setRequestProperty("Content-Type", "application/x-pdf");
當我在我的機器在本地Tomcat服務器部署該服務,那麼事情是絕對的罰款。我在過去的6個小時內掙扎着解決這個問題,但沒有任何線索。其實我必須在android的AsyncTask中獲取它。如果我能夠在java中完成,那麼我可以在android中實現相同的功能。有人可以幫我解決這個問題。
預先感謝
我評論conn.setDoOutput(true)和內容類型,這兩個語句,並添加con.setProperty(「接受」,「*」),但沒有任何工作。仍然得到404.當我在本地部署相同的時候,同樣的工作情況會如何? – HJK 2014-09-06 15:25:52
我錯過了URL中的'r'。感謝您的幫助。 – HJK 2014-09-09 02:32:03
,我想你應該調用conn.setDoInput(true) – Nepster 2015-08-05 07:53:34