当前位置: 首页 > 知识库问答 >
问题:

Jsoup http获取url时出错

裴翰学
2023-03-14

我只是下载了最新版本的j汤(1.7.1)并遵循官方代码(更改了url)。然后我得到了“超文本传输协议错误获取url”

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    try {
        loadData();
    } catch (IOException e) {
        Log.i("error",e.getMessage());
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void loadData() throws IOException {
    Document doc = Jsoup.connect("http://forum.mtr.com.hk/search.php?station=30&cat=&x=25&y=2").get();
    String title = doc.title();
    Log.i("title",title);
}}

我的代码有什么问题?似乎错误只是发生在Android项目,因为我在一个工作正常的Java项目做同样的事情。

注意:-我已经添加了Internet权限

共有1个答案

南宫兴德
2023-03-14

我也遇到过类似的问题。可能是您的设备连接太慢并且connect()函数超时太快,或者可能是由于一些无害的HTTP错误状态而失败。此外,我的J汤连接适用于大多数页面,但对于某些页面,我得到了“HTTP错误获取URL。状态=307”。事实证明,这实际上是一个从Web服务器到另一个URL的重定向请求。我用以下代码解决了所有这些问题:

Connection.Response res = Jsoup.connect(sUrl).
        timeout(5000).ignoreHttpErrors(true).followRedirects(true).execute();
if (res.statusCode() == 307) {
    String sNewUrl = res.header("Location");
    if (sNewUrl != null && sNewUrl.length() > 7)
        sUrl = sNewUrl;
    res = Jsoup.connect(sUrl).
            timeout(5000).execute();
}
Document doc = res.parse();

希望这能有所帮助,或者至少能激励您在调用get()或execute()之前尝试更多设置。

格雷格

 类似资料:
  • JSoup似乎可以处理我尝试过的所有URL,但这一个给了我400个错误。 我得到的错误是:

  • 我使用JSOUB清理所有网页,如下所示: 但我的问题是,代码一开始运行良好。 过一会儿,它会停止,总是给我“HTTP错误获取URL。状态=503错误”。 当我添加时。ignoreHttpErrors(true)它可以正常工作,但不会刮伤web。 *搜索词是我想要搜索的任何关键字,num是我需要检索的页数。 有人能帮忙吗?这是否意味着谷歌阻止了我的IP刮取?如果是的话,请问有什么解决方案或者我如何替

  • 我正在尝试从这里连接并检索页面标题。如果我从链接中删除“.com”之后的所有内容,代码运行良好。以下代码不起作用: 如果代码有效,返回的标题应该是“Sammamish Washington-Google News”。代码返回的错误是:“org.jsoup.HttpStatusException:HTTP错误获取URL。状态=405,URL=https://news.google.com/news/

  • 问题内容: 这与另一个问题有关。我正在使用以下简单代码通过代理获取URL: 如果运行此代码,则会收到此错误: 获取:连接到代理87.236.233.92:8080时出错:GetServByName:请求的名称有效,但是未找到请求类型的数据。 我知道代理地址是有效的,如果我通过其他方式通过代理获取URL,则它可以工作。知道为什么我会收到此错误吗? 问题答案: 用in 指定您的代理,它应该可以工作,例

  • 使用Jsoup连接到时https://rateyourmusic.com通过localhost,它工作得很好,然而,在Heroku上,我总是收到错误503,即使使用userAgent Heroku日志: 如果我尝试连接到Heroku上的另一个网站,它可以工作。 提前谢谢。

  • 线程“main”org.jsoup.HttpStatusException中出现异常:提取URL时出现HTTP错误。status=403,url=java Html解析器提取特定数据?在org.jsoup.helper.httpconnection$response.execute(httpconnection.java:590)在org.jsoup.helper.httpconnection$r