JAVA 在SWING 中显示网页上验证码图片的代码,谢谢

Let's GO GO GO 2014-01-05 09:45:49
网页图片地址:http://www.uxin.com/captcha/index.html?t=123
我在网上找的方法显示到Jlabel中,结果无错误。正常得到图片数据到BYTE[]中。
就是无法看到图片,无错误提示。自己看了网页上图片的格式为PNG。这个我不确定是否正常,呵呵
希望有拉伸效果,比如它的大小是100X30,我想拉伸放到我组件大小为200X60上面。变型也不所谓,我要的是代码。因为是验证码,所以那种在JLABLE里面有什么HTML的就不要来了,必须保留SESSION。谢谢,我帖出我的代码。

try {
Date dt = new Date();
Long ldt = new Long(dt.getTime());
String strURL = "http://www.uxin.com/captcha/index.html?t="
+ ldt.toString();
URL url = new URL(strURL);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
InputStream is = connection.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len = 0;
while ((len = is.read(buffer)) > 0) {
baos.write(buffer, 0, len);
}
is.close();
byte[] bytImg = baos.toByteArray();
baos.close();

connection.disconnect();
lblImg.setIcon(new ImageIcon(bytImg));//这里没得显示,BYTE里面有数据
} catch (Exception ex) {

}
...全文
335 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhp1900 2015-04-27
  • 打赏
  • 举报
回复
版主,能发个参考代码吗? 遇到同样的问题,上面的代码片段没看太明白! 邮箱是jhp1900@163.com谢谢咯!
Let's GO GO GO 2014-01-06
  • 打赏
  • 举报
回复
找到原因,以上代码全部正确。你的和我的都正确。 因为需要加HEAD才能正常得到见面数据。JAVA就是这么麻烦。 connection.setRequestProperty("Accept","text/html, application/xhtml+xml, */*"); 这东西全部加上即可。结帖给分,再次谢谢。有时候讨论也是一种帮助。
Let's GO GO GO 2014-01-06
  • 打赏
  • 举报
回复
我看了得到的数据,是个HTML,可以正常打开浏览。 你也可以看到的,为何在网页上打开就是图片了。我直接下载却成了网页,???
Inhibitory 2014-01-06
  • 打赏
  • 举报
回复
最大的问题在于你真的是拿到了图片吗? 执行下面的代码看看得到了什么。
        HttpURLConnection connection = (HttpURLConnection) new URL("http://www.uxin.com/captcha/index.html?t=" + new Date().getTime()).openConnection();
        connection.setDoInput(true);
        connection.setDoOutput(true);
        InputStream response = connection.getInputStream();
        byte[] buf = new byte[1024];

        FileOutputStream out = new FileOutputStream("/Users/Biao/Desktop/x.html");

        int len = 0;
        while ((len = response.read(buf)) != -1) {
            out.write(buf, 0, len);
        }
        out.flush();
        out.close();
Let's GO GO GO 2014-01-06
  • 打赏
  • 举报
回复
自己顶上去。
Inhibitory 2014-01-05
  • 打赏
  • 举报
回复
所以那种在JLABLE里面有什么HTML的就不要来了 怎么看上去就那么别扭呢!
Inhibitory 2014-01-05
  • 打赏
  • 举报
回复

import javax.swing.*;
import java.net.MalformedURLException;
import java.net.URL;

public class Aloha extends JPanel {
private static void createAndShowGui() throws MalformedURLException {
ImageIcon icon = new ImageIcon(new URL("http://www.cppblog.com/images/cppblog_com/biao/Button.png"));
JLabel label = new JLabel(icon);

JFrame frame = new JFrame();
frame.getContentPane().add(label);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
createAndShowGui();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
});
}
}
Let's GO GO GO 2014-01-05
  • 打赏
  • 举报
回复
关键是我从某个地址得到了这张图片的字节流,显示出来的时候有问题,就是处理过程有问题。 我怀疑有可能本来这些字节流就多出来了其它信息。或者解析的时候不正常。只得到字节流。 我也不知道这张图片具体格式是什么。这些原因也许有。 这网页的源码我提取出来了。 <img src="http://www.uxin.com/captcha/index.html"> 怎么都是这个地址,无法显示到组件上。但网页上正常显示,不知为何?
Let's GO GO GO 2014-01-05
  • 打赏
  • 举报
回复
引用 2 楼 Inhibitory 的回复:
所以那种在JLABLE里面有什么HTML的就不要来了 怎么看上去就那么别扭呢!
先谢谢你,大哥。你的代码运行正常。有图片。不过没解决我的问题。但提醒了我问题的所在位置。 你把我原来的代码上,显示图片的地址。直接用你的地址,那一切都正常了,因为你的地址直接是一个PNG文件地址,我的是个HTML流。 现在明白问题所在了。 一,怎么解析显示图片,网页地址不是图片格式的,如ASP ASPX JSP等等。 二,怎么拉伸显示。你那个代码只是直接把图片扔在上面的。 三,因为是验证码图片。所以会有COOKIE的。请不要直接用URL来显示图片,要先下载BYTE。再显示。这样下载的时候我就可以自己存一份COOKIE了。 再次谢谢了!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧