Java 使用httpurlconnection将servlet的响应写入pdf
我试图通过servlet中的url连接点击url。请求的响应(pdf)需要在浏览器上以pdf格式显示。在这里,我没有在服务器上保存任何临时pdf文件,这意味着我希望我的代码能够动态地以pdf格式生成url响应。目前,如果我直接在浏览器中点击Web服务url(REST),我的Web服务将返回pdf。 这是我的密码 我得到一个空白输出 代码:Java 使用httpurlconnection将servlet的响应写入pdf,java,servlets,pdf,Java,Servlets,Pdf,我试图通过servlet中的url连接点击url。请求的响应(pdf)需要在浏览器上以pdf格式显示。在这里,我没有在服务器上保存任何临时pdf文件,这意味着我希望我的代码能够动态地以pdf格式生成url响应。目前,如果我直接在浏览器中点击Web服务url(REST),我的Web服务将返回pdf。 这是我的密码 我得到一个空白输出 代码: 我得到一个空白的pdf输出你得到一些字节的数据吗?是的,我正在tomcat控制台上打印字节的数据。但是同样的结果,如果我试图通过设置“application/
我得到一个空白的pdf输出你得到一些字节的数据吗?是的,我正在tomcat控制台上打印字节的数据。但是同样的结果,如果我试图通过设置“application/pdf”将其放入pdf,我会得到一个空白的输出权限您正在关闭文件流Hi Juned,我没有使用文件流。我使用的是OutputStream二进制数据BASE64编码吗,我不相信你能把二进制文件当作一个字符串来处理,而不会有一大堆错误
package com.mm;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class testServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\""+ "dummy" + "\"");
byte[] pdfData = servicecall().getBytes("UTF-8");
System.out.println(pdfData.length);
response.setContentLength(pdfData.length);
OutputStream output = response.getOutputStream();
output.write(pdfData);
output.flush();
output.close();
}
public String servicecall()
{
String output = "";
BufferedReader reader = null;
StringBuilder stringBuilder;
try
{
URL url = new URL("http://hardik/Wecs/External/private/document.aspx?prd=1042737~~PDF~~MTR~~IPDS~~EN~~2014-01-10%2014:00:41~~SOLEST%20120~~");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/pdf");
conn.connect();
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
reader = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
stringBuilder.append(line + "\n");
}
output = stringBuilder.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println( output);
return output;
}
}