1
我有这个问题,我需要排队与TaskQueue
页面链接非英文网址:处理与Spring和App Engine的任务队列
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
不过是outputed通过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
这里为阿拉伯语或不?
好吧,我明白了,所以当我URL编码字符串'href',那么这是否意味着我的爬行方法将不能被用户从浏览器直接调用,因为它会做URL解码获取实际的网址? – xybrek
另外,从你所说的话来看,我似乎并没有在上面的代码中的for循环中对String'href'进行任何形式的转换,然后才传递到队列中。是对的吗? – xybrek