在c#中将双引号作为字符串传递的问题

时间:2013-12-09 09:13:44

标签: c# string escaping double-quotes

我需要将以下路径作为URI传递。

 https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d "code=DBvmp1o9"

我使用以下解决方案为双引号实现转义字符,导致内部服务器错误。

解决方案1:string URI = "https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d \"code=" + accessCode + "\"";

解决方案2(逐字字符串文字):string URI = @"https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d ""code=" + accessCode + ""; 非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

如果你输入转义字符你不应该使用双“/”..尝试使用单个“/”..它将工作..或在双引号之前简单地使用@。

答案 1 :(得分:0)

我尝试了您提供的代码,结果是: https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d“code = DBvmp1o9

最后缺少双引号。我敢打赌,因为最后的双引号并没有被逐字记录。 +""认为是空字符串而不是双引号。你的解决方案2应该是:

string URI = @"https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d ""code=" + accessCode + @"""";

或者

string URI = string.Format(@"https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d ""code={0}""", accessCode);

鉴于accessCode硬编码为“DBvmp1o9”,我测试的两个代码的输出应为:https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d“code = DBvmp1o9”

这是我最好的一击。如果你得到相同的输出但仍然得到内部服务器错误,那么你可以按照你所说的那样使用uri-escape实现。

答案 2 :(得分:0)

我更喜欢带有转义双引号的逐字字符串:

string URI = @"https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d \""code=accessCode\""";