2016-09-27 2 views
0

Как я могу достичь своих веб-действий Api с помощью амперсанда в строке запроса?Reach Web Api Действие с амперсандом в строке запроса

Это работает:

http://localhost:12345/api/MyController/MyAction?user=test&pw=abc123 

Это не:

http://localhost:12345/api/MyController/MyAction?user=test&pw=abc123 

Сообщение об ошибке является:

{ 
    "message": "No HTTP resource was found that matches the request URI 'http://localhost:12345/api/MyController/MyAction?user=test&pw=abc123'.", 
    "messageDetail": "No action was found on the controller 'MyController' that matches the request." 
} 

Я думал, Web API будет автоматически декодировать параметры строки запроса, но apperently его не ...

ответ

1

Когда вы используете & в строке запроса, вы фактически экранируете этот амперсанд, чтобы он читался как часть этого параметра. Таким образом, метод Web API фактически получает только один параметр «пользователь», который имеет «тест & pw = abc123».

+0

Это очевидно для меня. Дело в том, как я могу заставить его работать с амперсандом? URL-адрес входит в XML-файл, поэтому мне нужно его избежать. – iappwebdev

+0

Спецификация HTTP не позволяет вам отправлять ее таким образом и интерпретировать ее как две строки строки запроса. Ваши варианты: 1) Unescape перед отправкой или 2) Сделайте свой API просто принятым «пользователем», а затем проанализируйте его на C# после его поступления. # 2 кажется hacky - # 1 будет иметь больше смысла. Поскольку я не уверен, какой язык вы используете в своем коде, который вызывает API, я не знаю, как предложить, как его игнорировать. – grayimp

+0

Хорошо, я пойду с # 1, спасибо! – iappwebdev

Смежные вопросы