【问题标题】:Retrieving data from URL fails从 URL 检索数据失败
【发布时间】:2013-09-21 19:23:11
【问题描述】:

我一直在尝试不同的方法从以下链接获取数据: http://www.ensembl.org/Danio_rerio/Export/Output/Location?db=core;flank3_display=300;flank5_display=300;output=fasta;r=18:19408965-19409049;strand=feature;coding=yes;cdna=yes;peptide=yes;utr3=yes;exon=yes;intron=yes;genomic=unmasked;utr5=yes;_format=Text

将链接复制粘贴到网络浏览器对我有用,但我无法在 java 中以编程方式访问它。

似乎没有遵循get协议,因为参数的分离不如预期。 我尝试使用 URL,但它将上面的链接分隔为服务器路径和查询,并导致 HTTP 500。 我尝试使用套接字但再次失败。

我相信我需要的是一种方法,可以简单地发送完整的字符串,然后读取结果。

有什么想法吗?

【问题讨论】:

  • “它不遵循获取协议”部分很有趣。现在,如果您向我们展示代码,也许我们可以提供帮助。
  • 请贴出您正在使用的Java代码。
  • 一种可能性是服务器期望 HTTP 标头(例如 UserAgent),无论如何,如果这会导致 500,那将是一个非常扭曲的情况。
  • @SJuan76 我错过了什么吗?在使用分号时,不是使用 & 号的常见做法吗?
  • 如果您将 URL 放入浏览器并获得结果,那么服务器将遵循“获取协议”(因为这正是浏览器用来检索您可以看到的数据的方式)。分号很奇怪,但只是结束意味着程序员必须自己处理字符串,而不是让服务器解析它(再次,奇怪但并非不可能)。

标签: java url get


【解决方案1】:

此代码成功地从该 URL 读取第一行:

    URL u = new URL("http://www.ensembl.org/Danio_rerio/Export/Output/Location?db=core;flank3_display=300;flank5_display=300;output=fasta;r=18:19408965-19409049;strand=feature;coding=yes;cdna=yes;peptide=yes;utr3=yes;exon=yes;intron=yes;genomic=unmasked;utr5=yes;_format=Text");
    DataInputStream ds = new DataInputStream(u.openStream());
    String s = ds.readLine();
    System.out.println(s);

打印出来:>18 dna:chromosome chromosome:Zv9:18:19408665:19409349:1

【讨论】:

  • 谢谢,这真的告诉我我的代码一定有问题。之后我能够修复;我想我只需要证明它可以解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
相关资源
最近更新 更多