关于系统
我的项目中有这种格式的URL: -
http://project_name/browse_by_exam/type/tutor_search/keyword/class/new_search/1/search_exam/0/search_subject/0
Run Code Online (Sandbox Code Playgroud)
其中关键字/类对意味着使用"class"关键字进行搜索.
我有一个常见的index.php文件,它为项目中的每个模块执行.只有一个重写规则可以从URL中删除index.php: -
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)
我在阅读搜索URL时准备搜索URL和urldecode()时使用urlencode().
问题
只有正斜杠字符会破坏导致404页面未找到错误的URL.例如,如果我搜索one/twoURL是
http://project_name/browse_by_exam/type/tutor_search/keyword/one%2Ftwo/new_search/1/search_exam/0/search_subject/0/page_sort/
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我需要将index.php隐藏在URL中.否则,如果不需要,那么正斜杠就没有问题了,我可以使用这个URL: -
http://project_name/index.php?browse_by_exam/type/tutor_search/keyword/one
%2Ftwo/new_search/1/search_exam/0/search_subject/0
Run Code Online (Sandbox Code Playgroud) 我知道我能做到这一点
var nv = HttpUtility.ParseQueryString(req.RawUrl);
Run Code Online (Sandbox Code Playgroud)
但有没有办法将其转换回网址?
var newUrl = HttpUtility.Something("/page", nv);
Run Code Online (Sandbox Code Playgroud) 当我从浏览器的地址栏(几乎任何操作系统上的任何浏览器)复制UTF-8 URL时,然后尝试将其粘贴到另一个文本字段中(例如在Facebook或Twitter上发布),它只提供解码后的URL,这让它变得丑陋.例如,在地址栏中,URL显示如下:
但是当试图将其复制并粘贴到任何其他地方时,它会给出以下丑陋的URL:
如果我想获得原始URL以便在任何地方使用它,我曾经在这个原始URL解码器 - 在线工具中解码它
问题是:是否有一种简短的直接方式来复制这些类型的URL,并在没有这个可怕的过程的情况下粘贴它?(可能使用镀铬扩展或其他东西)
在Groovy中有一种URLEncode吗?
我找不到任何字符串?String URL编码实用程序.
示例:dehydrogenase (NADP+)?dehydrogenase%20(NADP%2b)
(+而不是%20也可以接受,因为一些实现这样做)
我怎么能检查字符串是否已被编码?
例如,如果我编码TEST==,我得到TEST%3D%3D.如果我再次编码最后一个字符串,我得到TEST%253D%253D,如果它已经编码,我必须知道它...
我已经保存了编码参数,我需要搜索它们.我不知道输入参数,它们是什么 - 编码与否,所以我必须知道在搜索之前是否必须对它们进行编码或解码.
我正在尝试编码和存储,并解码Python中的参数并在此过程中丢失.这是我的步骤:
1)我使用谷歌工具包gtm_stringByEscapingForURLArgument来正确转换NSString以传入HTTP参数.
2)在我的服务器(python)上,我将这些字符串参数存储为类似的东西u'1234567890-/:;()$&@".,?!\'[]{}#%^*+=_\\|~<>\u20ac\xa3\xa5\u2022.,?!\''(请注意,这些是"123"视图中的iphone键盘上的标准键和"#+ ="视图,其中的字符\u和\x字符是一些货币前缀,如英镑,日元等)
3)我调用urllib.quote(myString,'')该存储的值,大概是为了将它们转移到客户端,以便客户端可以取消它们的转义.
结果是当我尝试记录%escaping的结果时出现异常.是否有一些关键的步骤我忽略了需要应用于\ u和\ x格式的存储值才能正确转换它以通过http发送?
更新:标记为以下答案的建议对我有用.不过,我提供了一些更新来解决以下评论.
我收到的例外引用了一个问题\u20ac.我不知道具体是否是一个问题,而不是它是字符串中的第一个unicode字符.
这个\u20ac字符是'欧元'符号的unicode.我基本上发现我有问题,除非我使用urllib2 quote方法.
我想发送一个HTTP GET http://example.com/%2F.我的第一个猜测是这样的:
using (WebClient webClient = new WebClient())
{
webClient.DownloadData("http://example.com/%2F");
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我可以看到实际上在线上发送的是:
GET // HTTP/1.1
Host: example.com
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)
因此http://example.com/%2F在传输之前会被翻译成http://example.com //.
有没有办法实际发送此GET请求?
当使用OCSP over HTTP/GET时,OCSP协议要求发送base-64编码的url编码,因此必须发送实际的%2F而不是'/'才能兼容.
编辑:
以下是OCSP协议标准(RFC 2560附录A.1.1)的相关部分:
使用GET方法的OCSP请求构造如下:
GET {url}/{对OCSPRequest的DER编码的base-64编码的url编码}
我对其他读物非常开放,但我看不出还有什么意思.
当我通过URL的InputStream读取xml,然后删除除url之外的所有内容时,我得到" http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu% 20Bin%20Bataye.mp3 ".
如你所见,有很多"%20".
我希望网址不被转义.
有没有办法在Java中这样做,而不使用第三方库?
我无法打开URL,UIWebView因此我已经进行了搜索并发现我需要对URL进行编码,因此我尝试对其进行编码,但是我在URL编码方面遇到了问题:我的网址是http://somedomain.com/data/Témp%20Page%20-%20Open.html(它不是真正的网址).
我很担心%20,我试着用替换stringByReplacingOccuranceOfString:@"" withString:@"",它给我我想要像URL http://somedomain.com/data/Témp Page - Open.html但它不是开放的UIWebView,但令人惊讶它在打开Safari和FireFox完善.即使我打开未编码的URL,它也会自动转换并打开我正在寻找的页面.
我已经谷歌进行URL编码了,它指出了我已经检查过的不同结果,但没有结果帮助我!我在不同的URL编码问题中尝试了不同的函数答案,但它只是更改了所有特殊字符并使我的URL像在一起,甚至在任何浏览器中http%3A%2F%2Fsomedomain.com%2Fdata%2FT...都无法打开UIWebView.
它提供了以下Error Log的UIWebView delegate
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { }
Run Code Online (Sandbox Code Playgroud)
错误代码:101&描述:错误域= WebKitErrorDomain代码= 101"操作无法完成.(WebKitErrorDomain错误101.)"UserInfo = 0x6e4cf60 {}