1

ページリンクをキューに入れる必要があるこの問題があります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にアラビア文字のが含まれていると思います。再スケジュールが続くので。

ただし、StringpageLinksは Spring MVC を介してブラウザーに出力され、アラビア文字が表示されていることを正しく確認できます。だから私はかなりリンクが大丈夫です。

ブラウザに出力されたリンクの 1 つをコピーしてブラウザの 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ますか?

4

1 に答える 1

1

パラメータをURL エンコードする必要があります。この質問を参照してください:クエリ文字列パラメーターの Java URL エンコード

于 2013-05-20T09:21:36.957 に答える