使用Java编程获取URL响应

3
我正在开发一个应用程序,需要读取URL的内容,并在向服务器发送请求参数后将该请求发送回服务器。我使用了Jsoup库来获取响应。但是当我给出我的URL("http://10.100.56.55:8090")时,即cyberoam的URL时,无法获取响应。我正在开发一个自动登录cyberoam的应用程序。如果我给出其他任何URL,则我的代码都可以正常工作。但是对于这个URL,会抛出下面写的异常。

代码:

ResourceBundle rb = ResourceBundle.getBundle("bundle.Configuration");                              
try
{             
    Document doc=Jsoup.connect(rb.getString("cyberlink_url")).get();
}
catch (Exception e) 
{
    System.out.println("Error Class is :- " + e.getClass());
    e.printStackTrace();
}

错误:

Error Class is :- class java.nio.charset.IllegalCharsetNameException
java.nio.charset.IllegalCharsetNameException: UTF=8
    at java.nio.charset.Charset.checkName(Charset.java:320)
    at java.nio.charset.Charset.lookup2(Charset.java:496)
    at java.nio.charset.Charset.lookup(Charset.java:475)
    at java.nio.charset.Charset.forName(Charset.java:540)
    at org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:78)
    at org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:440)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:133)
    at cyberoam.Cyberoam.btnLoginActionPerformed(Cyberoam.java:199)
    at cyberoam.Cyberoam.access$000(Cyberoam.java:24)
    at cyberoam.Cyberoam$1.actionPerformed(Cyberoam.java:82)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    .......

我面临的问题是为什么只有网站的响应未被获取?出了什么问题?我已经使用上面的代码尝试过其他网站的URL,如Google和Yahoo,它们都能正常工作。这个URL在网络上是可访问的。如果我漏掉了重要的东西,请帮助我。

1个回答

2

由于您没有启用端口转发,我们无法查看“您url的内容”。

然而,我猜测响应中有这样一行:

<?xml version="1.0" encoding="UTF=8" ?>

或者

<meta http-equiv="Content-Type" content="text/html; charset=UTF=8">

你需要将它更改为

<?xml version="1.0" encoding="UTF-8" ?>

或者

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

所谓更改,是指:提供响应的Web服务器(例如您自己设置的XAMPP)可能正在上传一个XML(或HTML)文件。该文件就是有错误行的那个文件。

当然,“UTF=8”并不存在,“UTF-8”才是正确的写法。


不,你必须编辑HttpServer上传的文件。我猜是某种index.html文件。 - Martijn Courteaux
然后联系管理员并告诉他更改它。 - Martijn Courteaux
正如Martjin所说,为了与您使用的库配合使用,网站的内容必须更改。如果内容无法更改,那么您需要覆盖库使用的字符集(因此它不会尝试解释标签),或者以另一种方式获取内容并在解码之前进行修改(例如,使用java.net.URL自己获取)。 - Trevor Freeman
它自动改变可能是您用于下载和保存页面的浏览器的小技巧。 - Martijn Courteaux
@MartijnCourteaux:使用java.net.URL类,我成功地获取了网页的响应。现在我想设置页面的请求参数,并将其发布到HTML中指定的页面。我该怎么做? - ATR
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接