以下のように、クエリキーに「#」文字が存在します。
17\#30\#36\#94\#35
したがって、クエリURLは次のように生成されますhttp://10.251.25.12:8080/commentindex/comment/select?q=17\#30\#36\#94\#35&rows=200&wt=json
。ご覧のとおり、「#」が存在するため、URLはサーバーに送信する前に切り捨てられ、エラー結果、エラー行数、エラードキュメントタイプ(設定したjsonではない)が表示されます。
上記の例では、URLをとしてエンコードしましたhttp://10.251.25.12:8080/commentindex/comment/select?q=17%5c%2330%5c%2336%5c%2394%5c%2335&rows=200&wt=json
。すべてが私の期待どおりに進みます。ただし、クエリキーが次のようになっていると、別のエラーが発生します。
←\~\\(≧▽≦\)\/\~!!|
URLは次のように生成されます。
http://10.251.25.12:8080/commentindex/comment/select?q=%e2%86%90%5c%7e%5c%5c(%e2%89%a7%e2%96%bd%e2%89%a6%5c)%5c%2f%5c%7e%ef%bc%81%ef%bc%81%7c&rows=200&wt=json
かっこはありますか?solrクエリの特別な文字です!400悪いリクエスト私はURLから取得します。
すべてのクエリキーが「\」でエスケープされていることに気づきました。したがって、URL全体をエンコードせず、「#」文字のみをエンコードする必要がある場合はどうでしょうか。他に注意すべき特別な文字はありますか?