2013-12-09 2 views
0

Мне нужно передать приведенный ниже путь как URI.Проблема с пропущенными двойными кавычками как строка в C#

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

Я использовал следующие решения для реализации побега charecter для двойных кавычек, которые привели к внутренней ошибке сервера.

Решение 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 + ""; Любая помощь очень ценится.

+0

Что вы проходящее строку * к *? –

+1

пространство и цитаты - это не то, что вы видите в урисе; ты ури-сбежал? (пробел будет + или% 20, котировки будут% 22, равно будет% 3d и т. д. –

+0

@ lc: Я передаю строку методу Weclient.UploadValues ​​(). – aceventura

ответ

0

Если вы нажмете escape-символ, вы не должны использовать double «//» .. попробуйте использовать одиночный «/» .. это будет работа .. или просто используйте @ перед двойными кавычками.

+0

/не требуется экранирование в терминах C# , а в http-url, // очень желательно –

+0

@vijay: какой двойной «//» вы говорите? https: // api. ?? – aceventura

0

Я попытался код вы предоставляете, и результат:. https://api.mytrade.com/oauth/accesstoken?grant_type=auth_code -d «Код = 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, как вы сказали.

+0

Нет Luck @ har07, все еще получая внутреннюю ошибку сервера. e window показывает -d \ "code = dKBFuf1e \" " – aceventura

+0

странный, -d \" code = dKBFuf1e \ "" кажется теперь лишним двойным кавычками в конце. – har07

0

Я предпочел бы дословный строку с сбежавшего двойной кавычки:

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