我有这个问题,我需要将页面链接排队TaskQueue
:
Queue queue = QueueFactory.getDefaultQueue();
for (String href : hrefs){
href = baseUrl + href;
pageLinks = pageLinks + "\n" + href;
queue.add(TaskOptions.Builder
.withUrl("/crawler")
.param("url", href));
l("Added to queue url=["+href+"]");
}
这里的问题是,我认为传递到队列中的 URL 包含?
阿拉伯字符的 's。因为它不断地重新安排。
然而,字符串pageLinks
是通过 Spring MVC 在浏览器中输出的,我可以正确地看到正在显示的阿拉伯字符。所以我很漂亮链接还可以。
如果我在浏览器上复制其中一个链接输出,并将其粘贴到浏览器 URL,它就可以正常工作。所以我很确定队列不断重新安排的原因是因为它获取了错误的 URL。
我在这里能错过什么?String href
在将它传递到队列之前我需要转换它吗?
抓取服务如下所示:
@RequestMapping(method = RequestMethod.GET, value = "/crawl",
produces = "application/json; charset=iso-8859-6")
public @ResponseBody String crawl(HttpServletRequest req, HttpServletResponse res,
@RequestParam(value="url", required = false) String url) {
l("Processs url:" + url);
}
我还需要将此处的@QueryParam
字符串转换url
为阿拉伯语吗?