如何在 c# 中处理 url 中的逗号
本文关键字:url 处理 | 更新日期: 2023-09-27 18:18:13
我的网址字符串是
"https://MyCom.Produect.App.ResourcePath/ts?Customer_Account=A B C'', LLC,D E F'', LLC&Billing_Code=11,12&fromDateTime=2013-05-13&toDateTime=2013-06-13">
如果我在IE中复制它并运行,它将返回一些数据。但是,c# 中的相同字符串给了我一个错误的请求异常。这是我的 c# 代码,我想我一定错过了一些东西。谢谢
public void GetDataAsyn(string m_strUrl)
{
var username = m_strEmail;
var password = m_strPassword;
var uri = new Uri(m_strUrl);
var credentialCache = new CredentialCache();
credentialCache.Add(uri, "Basic", new NetworkCredential(username, password));
var httpRequest = (HttpWebRequest)WebRequest.Create(uri);
httpRequest.Method = "GET";
httpRequest.ContentType = "application/json";
httpRequest.UseDefaultCredentials = true;
httpRequest.Accept = Constants.CONTENT_TYPE_TEXT_CSV;
httpRequest.UserAgent = Helper.GetUserAgent();
Helper.SetProxyIfNeeded(httpRequest, uri);
httpRequest.Headers.Add("Authorization", Helper.GetAuthHeader(username, password));
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
httpRequest.BeginGetResponse(GetResponseCallback, new object[] { httpRequest });
}
private void GetResponseCallback(IAsyncResult asyncResult)
{
try
{
var obj = (object[])asyncResult.AsyncState;
var request = (HttpWebRequest)obj[0];
var response = request.EndGetResponse(asyncResult);
Stream responseStream = response.GetResponseStream();
if (responseStream != null)
{
var streamReader = new StreamReader(responseStream);
ReturnedData = streamReader.ReadToEnd();
}
....do something with ReturnedData
}
catch (Exception ex)
{
Helper.LogError(ex);
}
}
我将在这里在黑暗中拍摄,因为您没有向我们展示如何将URL分配给m_strUrl
。
您很可能收到错误请求,因为 C# 中的'
字符是转义。
要纠正这样的问题,您要么必须像这样逃避'
''
或者处理此问题的更简洁方法是使用 @
符号并使字符串成为文字。
如果您提供的示例中的'
是 url 的一部分(不是转义字符(,则以下是您的文本 url 字符串:
string m_strUrl = @"https://MyCom.Produect.App.ResourcePath/ts?Customer_Account=A%20B%20C',%20LLC,D%20E%20F',%20LLC&Billing_Code=11,12&fromDateTime=2013-05-13&toDateTime=2013-06-13";
如果您已经尝试使用'
转义逗号,则字符串将如下所示。
string m_strUrl = @"https://MyCom.Produect.App.ResourcePath/ts?Customer_Account=A%20B%20C,%20LLC,D%20E%20F,%20LLC&Billing_Code=11,12&fromDateTime=2013-05-13&toDateTime=2013-06-13";