我有一个应用程序向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值或任何其他可以轻松识别字符的值.
我正在尝试编写一个调用网站数据的Windows客户端应用程序.为了使安装保持最小,我尝试仅在.NET Framework客户端配置文件中使用dll.麻烦的是我需要UrlEncode一些参数,有没有一种简单的方法可以在不导入System.Web.dll的情况下执行此操作,而System.Web.dll不是Client Pofile的一部分?
Server.UrlEncode和HttpUtility.UrlEncode之间有区别吗?
我收到错误:
System.UriFormatException: Invalid URI: The Uri string is too long.
Run Code Online (Sandbox Code Playgroud)
问题出在这一行:
FormUrlEncodedContent content = new FormUrlEncodedContent(postData);
Run Code Online (Sandbox Code Playgroud)
经过研究,我了解到这是因为FormUrlEncodedContent类的大小限制。但我不确定如何解决这个问题?参见下面的代码:
public Token RequestToken(string username, int businessID, string requestXml)
{
var postData = new Dictionary<string, string>() { { "username", username }, { "businessID", businessID.ToString() }, { "authenticator", requestXml } };
FormUrlEncodedContent content = new FormUrlEncodedContent(postData);
try
{
HttpResponseMessage response = _client.PostAsync("Token", content).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<Token>().Result;
}
}
catch (Exception ex)
{
log.Error(ex);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
有人能帮忙吗?