Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用httpurlconnection将servlet的响应写入pdf_Java_Servlets_Pdf - Fatal编程技术网

Java 使用httpurlconnection将servlet的响应写入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/

我试图通过servlet中的url连接点击url。请求的响应(pdf)需要在浏览器上以pdf格式显示。在这里,我没有在服务器上保存任何临时pdf文件,这意味着我希望我的代码能够动态地以pdf格式生成url响应。目前,如果我直接在浏览器中点击Web服务url(REST),我的Web服务将返回pdf。 这是我的密码 我得到一个空白输出

代码:


我得到一个空白的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;
}


}