相关疑难解决方法(0)

Java中的HTTP URL地址编码

我的Java独立应用程序从用户获取一个URL(指向一个文件),我需要点击它并下载它.我面临的问题是我无法正确编码HTTP URL地址......

例:

URL:  http://search.barnesandnoble.com/booksearch/first book.pdf

java.net.URLEncoder.encode(url.toString(), "ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)

回报我:

http%3A%2F%2Fsearch.barnesandnoble.com%2Fbooksearch%2Ffirst+book.pdf
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是

http://search.barnesandnoble.com/booksearch/first%20book.pdf
Run Code Online (Sandbox Code Playgroud)

(空间由%20取代)

我猜URLEncoder不是为了编码HTTP URL而设计的... JavaDoc说"用于HTML表单编码的实用程序类"......有没有其他方法可以做到这一点?

java http urlencode

356
推荐指数
14
解决办法
35万
查看次数

如何编码URI参数值?

我想发送一个URI作为查询/矩阵参数的值.在我将它附加到现有URI之前,我需要根据RFC 2396对其进行编码.例如,给定输入:

http://google.com/resource?key=value1 & value2

我期待输出:

http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2

java.net.URLEncoder不会也java.net.URI不会产生正确的输出.URLEncoder用于HTML格式编码,与RFC 2396不同.URI没有一次编码单个值的机制,因此无法知道value1和value2是同一个键的一部分.

java rest url urlencode rfc2396

56
推荐指数
3
解决办法
12万
查看次数

.Net Uri编码RFC 2396与RFC 3986

首先,一些快速背景...作为与第三方供应商集成的一部分,我有一个C#.Net Web应用程序,它接收查询字符串中包含大量信息的URL.该URL使用MD5哈希和共享密钥进行签名.基本上,我拉入查询字符串,删除它们的哈希,在剩余的查询字符串上执行我自己的哈希,并确保我匹配所提供的哈希.

我正在以下列方式检索Uri ......

Uri uriFromVendor = new Uri(Request.Url.ToString());
string queryFromVendor = uriFromVendor.Query.Substring(1); //Substring to remove question mark
Run Code Online (Sandbox Code Playgroud)

我的问题源于查询字符串,其中包含特殊字符,如变音符号(ü).供应商正在根据RFC 2396表示计算其哈希值%FC.我的C#.Net应用程序正在根据RFC 3986表示计算它的哈希值%C3%BC.不用说,我们的哈希不匹配,我抛出我的错误.

奇怪的是,.Net中Uri类文档说它应该遵循RFC 2396,除非另有设置为RFC 3986,但我没有在我的web.config文件中有他们说这个行为需要的条目.

如何强制Uri构造函数使用RFC 2396约定?

如果失败了,有没有一种简单的方法将RFC 3986八位字节对转换为RFC 2396八位字节?

asp.net uri url-encoding rfc2396 rfc3986

8
推荐指数
1
解决办法
3491
查看次数

标签 统计

java ×2

rfc2396 ×2

urlencode ×2

asp.net ×1

http ×1

rest ×1

rfc3986 ×1

uri ×1

url ×1

url-encoding ×1