【问题标题】:Crazy behaviour of URISyntaxExceptionURISyntaxException 的疯狂行为
【发布时间】:2016-01-06 16:35:33
【问题描述】:

当我尝试使用 apache http 客户端执行 get 请求时

http://www.shutterstock.com/cat.mhtml?searchterm=иь

效果很好,但是当我尝试时

http://www.shutterstock.com/cat.mhtml?searchterm=ь

我收到URISyntaxException

完整的堆栈跟踪作为屏幕截图,因为我无法在Ñ之后粘贴第二个符号:

另一个成功的网址:

http://www.shutterstock.com/cat.mhtml?searchterm=сиськи
http://www.shutterstock.com/cat.mhtml?searchterm=сиськиа
http://www.shutterstock.com/cat.mhtml?searchterm=сись
http://www.shutterstock.com/cat.mhtml?searchterm=ф

另一个失败的网址:

http://www.shutterstock.com/cat.mhtml?searchterm=сиськиаа
http://www.shutterstock.com/cat.mhtml?searchterm=брей
http://www.shutterstock.com/cat.mhtml?searchterm=фф

这到底是怎么回事?

我尝试了URI.create 和URLEncoder.encode 的url 编码。

使用 URLEncoder.encode 我的网址看起来像:

http://www.shutterstock.com/cat.mhtml?searchterm=%D1%8C

但我得到完全相同的异常。

【问题讨论】:

  • 见RFC 3986 § 2。 URI 中不允许使用西里尔字符...
  • Брей сиськи - это правильно
  • @BoristheSpider 我写道我使用了 URLEncoder.encode 所以我尝试执行 http://www.shutterstock.com/cat.mhtml?searchterm=%D1%8C 得到相同的结果
  • @KaPaHgaIII 如果你编码然后传递给构造函数,你最终会得到this problem - 即双重编码。
  • @BoristheSpider 我没有进行双重编码,我尝试了 URLEncoder.encode 或 URI.create

标签: java url encoding apache-httpclient-4.x url-encoding


【解决方案1】:

我找到了问题发生的原因:

当没有符合我要求的图片时,shutterstock 会将我重定向到 /search-zero 页面,否则它会停留在 /cat.mhtml。

所以我需要实现自己的重定向处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2010-12-01
    • 1970-01-01
    • 2014-08-21
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多