2

我的程序中使用 Alchemy API 从 URL 中提取关键字和关系。

从 API 调用中提取这些时,我收到如下错误,

'java.io.IOException:进行 API 调用时出错:无法检索:downstream-http-error:404。在 com.alchemyapi.api.AlchemyAPI.doRequest(AlchemyAPI.java:960) 在 com.alchemyapi.api.AlchemyAPI.GET(AlchemyAPI.java:914) 在 com.alchemyapi.api.AlchemyAPI.URLGetRankedKeywords(AlchemyAPI.java:234) ) 在 com.alchemyapi.api.AlchemyAPI.URLGetRankedKeywords(AlchemyAPI.java:224) 在 innointel.feature1.Article.alchemyCall(Article.java:477)'

然后我发现“ http://venturebeat.com/2014/10/22/microsoft-and-ibm-partner-to-bring-enterprise-software-to-their-respective-cloud-platforms/ ”是导致错误。我调用了关系 API,只是将 URL 如下所示..

文档 doc = alchemyObj.URLGetRelations(" http://venturebeat.com/2014/10/22/microsoft-and-ibm-partner-to-bring-enterprise-software-to-their-respective-cloud-platforms/ ") ;

现在好了,它不包含任何错误。这里到底发生了什么?

我在一些网站上发现“cannot-retrieve:downstream-http-error:404”是由于作为参数传递的 URL 无效。在 50 个 URL 中,我测试了 7 个 URL 显示错误。剩余工作正常。当我再次提取 URL 字符串时,将其作为参数 7 URL 工作正常。

(使用 POI API 从 excel 文档中解析 URL)

提前致谢

4

1 回答 1

1

如你所说

'java.io.IOException:进行 API 调用时出错:无法检索:downstream-http-error:404'

异常是由函数调用中的错误 URL 参数引起的 (ie.URLGetRankedKeywords()) 由于 URL 是从 EXCEL 文档中解析的,因此有时单元格末尾可能会出现“\r”字符。如果存在,这将使 URL无效。您可以做的是,在将 URL 传递给 API 调用之前,从 URL 中删除所有 '\r' 字符。

IE ,

url = url.replaceAll("\r", "");
Document doc = alchemyObj.URLGetRelations(url);

这可能有用。它对我有用。

于 2014-11-06T06:58:27.467 回答