我遇到此问题,我需要使用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包含?
的阿拉伯字符。因为它一直在重新安排。
然而,字符串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
转换为阿拉伯语吗?