相关疑难解决方法(0)

使用C#进行URL编码

我有一个应用程序向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值或任何其他可以轻松识别字符的值.

.net c# urlencode

316
推荐指数
11
解决办法
56万
查看次数

使用新的Spring UriComponentsBuilder进行URL编码

我正在尝试使用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)

明确地允许':'和'/'字符,这不应该是口香糖.它必须做一些其他类型的编码,虽然对于我的生活,我无法想象什么.我在这里吠叫错了树吗?

谢谢

spring

24
推荐指数
2
解决办法
5万
查看次数

标签 统计

.net ×1

c# ×1

spring ×1

urlencode ×1