问题:如果页面在使用字符串时有图像,那么将http消息的响应写回客户端(Web浏览器)不会返回整页,所以我决定使用字节,但我仍然有同样的问题。我有能够从请求中获取标题作为字符串并将其刷新到客户端,但我不知道如何处理该消息以确保它在Web浏览器上正确显示。
//This portion takes the message from the Httpurl connection inputstream
//the header has already been exttracted
//uc here represents a httpurlconnection
byte[] data = new byte[uc.getContentLength()];
int bytesRead = 0;
int offset = 0;
InputStream in = new BufferedInputStream(uc.getInputStream());
while (offset < uc.getContentLength()) {
bytesRead =in.read(data, offset, data.length-offset);
if (bytesRead == -1) break;
offset += bytesRead;
答案 0 :(得分:0)
我建议你在阅读时将字节写入响应,并使用一个小缓冲区,这样服务器就不会受到大量内存使用的影响。将所有字节加载到服务器内存中的数组中并不是一个好习惯。
以下是一个快速示例:
response.setContentType("text/html;charset=UTF-8");
OutputStream out = response.getOutputStream();
HttpURLConnection uc;
// Setup the HTTP connection...
InputStream in = uc.getInputStream();
byte[] b = new byte[1024];
int bytesRead = 0;
while ( bytesRead != -1 ) {
bytesRead = in.read(b);
out.write(b);;
}
// Close the streams...
答案 1 :(得分:0)
您似乎在使用图像代理HTML页面,并且您似乎期望HTML页面中的图像以某种方式在HTML源代码中自动内联。因此绝对不是这样。 HTML中的图像由<img>
元素表示,src
属性指向webbrowser必须单独调用和下载的URL。完全相同的故事适用于CSS和JS文件等其他资源。
您基本上需要解析获得的HTML,扫描所有<img src>
(如有必要还要<link href>
和<script src>
)元素并将其网址更改为您的代理的网址,以便它可以单独提供所需的图像(和CSS / JS)资源。
您可以在此答案中找到相关问题的启动示例:Make HttpURLConnection load web pages with images