我有一个应用程序向VB论坛软件发送POST请求并记录某人(没有设置cookie或任何东西).
一旦用户登录,我创建一个在其本地计算机上创建路径的变量.
C:\ tempfolder \日\用户名
问题是一些用户名正在抛出"非法字符"异常.例如,如果我的用户名是,mas|fenix它会抛出异常..
Path.Combine( _
Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), _
DateTime.Now.ToString("ddMMyyhhmm") + "-" + form1.username)
Run Code Online (Sandbox Code Playgroud)
我不想从字符串中删除它,但是在服务器上通过FTP创建了带有用户名的文件夹.这导致了我的第二个问题.如果我在服务器上创建一个文件夹,我可以留下"非法字符"吗?我只是问这个,因为服务器是基于Linux的,我不确定Linux是否接受它.
编辑:似乎URL编码不是我想要的..这是我想要做的:
old username = mas|fenix
new username = mas%xxfenix
Run Code Online (Sandbox Code Playgroud)
其中%xx是ASCII值或任何其他可以轻松识别字符的值.
我正在尝试使用spring的UriComponentsBuilder来生成一些用于oauth交互的URL.查询参数包括诸如回调URL和其中包含空格的参数值之类的实体.
试图使用UriComponentBuilder(因为现在不推荐使用UriUtils)
UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(oauthURL);
urlBuilder.queryParam("client_id", clientId);
urlBuilder.queryParam("redirect_uri", redirectURI);
urlBuilder.queryParam("scope", "test1 test2");
String url = urlBuilder.build(false).encode().toUriString();
Run Code Online (Sandbox Code Playgroud)
不幸的是,虽然scope参数中的空格已成功替换为'+',但redirect_uri参数根本不是url编码的.
例如,
redirect_uri=https://oauth2-login-demo.appspot.com/code
Run Code Online (Sandbox Code Playgroud)
应该结束了
redirect_uri=https%3A%2F%2Foauth2-login-demo.appspot.com%2Fcode
Run Code Online (Sandbox Code Playgroud)
但没有动过.潜入代码,特别是org.springframework.web.util.HierarchicalUriComponents.Type.QUERY_PARAM.isAllowed(c):
if ('=' == c || '+' == c || '&' == c) {
return false;
}
else {
return isPchar(c) || '/' == c || '?' == c;
}
Run Code Online (Sandbox Code Playgroud)
明确地允许':'和'/'字符,这不应该是口香糖.它必须做一些其他类型的编码,虽然对于我的生活,我无法想象什么.我在这里吠叫错了树吗?
谢谢