2016-09-27 13 views
0

クエリー文字列でアンパサンドでWeb APIアクションにアクセスするにはどうすればよいですか?クエリー文字列のアンパサンドで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それだろうと思いましたdoes not ...

答えて

1

&をクエリ文字列に使用すると、実際にそのアンパサンドがエスケープされ、そのパラメータの一部として読み取られます。したがって、Web APIメソッドは、実際には、「test & pw = abc123」という1つのパラメータ「user」のみを受け取ります。

+0

これは明らかです。ポイントはどのようにアンパサンドで動作させることができるのですか? URLはXMLファイルに入っているので、私はそれをエスケープする必要があります。 – iappwebdev

+0

HTTP仕様では、このように送信して2つのクエリ文字列変数として解釈させることはできません。あなたのオプションは、1)送信する前にそれをエスケープするか、または2)あなたのAPIが単に「ユーザ」を受け入れるようにして、それが到着したらC#で解析することです。 #2はハッキーに見えます - #1はもっと理にかなっています。 APIを呼び出すコードでどの言語を使用しているのかわからないので、どのようにしてそれをエスケープするかを知らせる方法はわかりません。 – grayimp

+0

[OK]を、私は#1と一緒に行くよ、ありがとう! – iappwebdev