2016-09-27 3 views
0

쿼리 문자열에 앰퍼샌드가있는 웹 API 동작에 어떻게 접근합니까?쿼리 문자열에 앰퍼샌드가있는 Web Api 동작

이 작동 :

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

이되지 않습니다

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

오류 메시지가 : 나는 웹 API 자동으로 쿼리 문자열 매개 변수를 디코딩 할 것이라고 생각

{ 
    "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." 
} 

하지만 apperently을 하지 않습니다 ...

답변

1

&을 쿼리 문자열에 사용하면 실제로 해당 앰퍼샌드를 이스케이프 처리하여 해당 매개 변수의 일부로 읽습니다. 따라서 웹 API 메서드는 실제로 "& pw = abc123"테스트를 가진 "user"매개 변수 하나만 수신합니다.

+0

저에게 명백합니다. 요점은 어떻게 그것을 앰퍼샌드와 함께 사용할 수 있습니까? URL은 XML 파일로 제공되므로이 파일을 이스케이프 처리해야합니다. – iappwebdev

+0

HTTP 사양은이 방법으로 보내지 않고 두 개의 쿼리 문자열 변수로 해석하도록 허용하지 않습니다. 옵션은 1) 보내기 전에 이스케이프 처리하지 않거나 2) API가 "사용자"를 수락 한 다음 도착한 후에 C#으로 파싱합니다. # 2는 해킹 된 것처럼 보입니다. # 1은 더 의미가 있습니다. API를 호출하는 코드에서 어떤 언어를 사용하고 있는지 확실하지 않으므로이를 이스케이프 처리하는 방법을 제안하는 방법을 모르겠습니다. – grayimp

+0

좋아, 1 번에 갈거야, 고마워! – iappwebdev