【问题标题】:Fetching URL response through coding in java通过java中的编码获取URL响应
【发布时间】:2012-01-24 19:16:02
【问题描述】:

我正在开发一个应用程序,我必须在其中读取 url 的内容,并且在给它请求参数之后,我必须将该请求发布回服务器。我使用 Jsoup 库来获取响应。但是,当我提供用于 Cyber​​oam 的 url ("http://10.100.56.55:8090") 时,没有获取响应。我正在开发自动登录cyberoam的应用程序。现在,如果我提供任何其他网址,那么我的代码就可以正常工作。但是对于这个 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)
    .......

我在这里面临的问题是为什么只获取网站的响应?那有什么问题?我已经尝试使用其他网站的网址(如 google、yahoo)上面的代码,并且效果很好。这个 url 可以在 url 中访问。如果我遗漏了任何重要的东西,请帮助我。

【问题讨论】:

    标签: java http url response


    【解决方案1】:

    由于您没有启用端口转发,我们无法查看“您的 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">
    

    通过更改,我的意思是:提供响应的网络服务器(您自己设置,例如 XAMPP)可能正在上传一个 xml(或 html)文件。那个文件是行错的那个。

    当然,UTF=8 不存在。 UTF-8 会。

    【讨论】:

    • 它已经给出错误,所以我该如何更改 url 的内容?以及如何启用端口转发?
    • 不,您必须编辑 HttpServer 上传的文件。我猜是某种index.html
    • 好吧,我做不到。因为我不允许编辑网站的任何内容。它由管理员控制,我想由于某种安全性,我无法获取响应。
    • 然后联系管理员并告诉他更改它。
    • @ankur.trapasiya 正如 Martjin 所说,必须更改网站内容才能与您正在使用的库一起使用。如果内容无法更改,那么您需要覆盖库使用的字符集(因此它不会尝试解释标签)或以另一种方式获取内容并在解码之前对其进行修改(例如,使用 java.net.网址)。
    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多