2016-08-22 11 views
0

バックスラッシュ( "\")を含む値のセットを渡そうとしています。これにより、URLが破損します。私が提出するURLは、私は基本的に"URL": "T:\TechnologyWorkRequests\2016\TAD160888_Communications"アタスク - 値としてURLにバックスラッシュ()を渡します。

は、私はバックスラッシュを理解してURLフィールドに値を渡したいhttps://{mycompany}.attasksandbox.com/attask/api/project?ID=57ba84---1&updates={"description":"ToImplementWorkFront","URL":"T:%5CTechnologyWorkRequests%5C2016%5CTAD160888_Communications"}&apiKey=g--t&method=put

で、安全でない文字、ひいては%の5Cとしてエンコードだけでなく、%255C-ですが、私は、JSONの構文解析エラーが発生します。 スラッシュ(/)を%2Fとしてエンコードできますが、「\」文字を渡すことはできません。誰でも助けてくれますか?前もって感謝します!

答えて

0

GETメソッドの代わりにPOSTを使用する必要があります。

"https://posturl/?update=" + encodeURIComponent("{ \"path\": \"C:\\Windows\\System32\"}") 

より安全:あなたはまだ使用したい場合は はGET次の例のような何かを行うことができます

var data = { 
    "path": "C:\\Windows\\System32\" 
} 
var url = "https://posturl/?update=" + encodeURIComponent(JSON.stringify(data)) 
+0

ダニエル - 私が使用したことがないGETをではなく、RESTの原則に従ってPUT使用します。私は.Netフレームワークを使用し、URLをエンコードしてデコードする機能を持っています。しかし、問題は、そのような要求を受け入れるためにAPIがどのように設計されているかです。私はそれが渡されるべき方法を知ったら、私はそれを私のC#コードから処理することができます。 – Paalya

+0

putを使用する場合は、URLにないリクエスト本体にデータを置く必要があります。 あなたがドットネットWEBAPIを使用している場合、このように宣言する必要があります。 '[HttpPut] 公共結果のアップデート([FromBody]にupdateDataデータ)' バックスラッシュは、JSONデータを限り、あなたドンとして解析される方法に影響しません。あなたがデータをエンコードするときに気にしないでください。 C#で: 'var data = JsonConverter.Serialize(updateData);'それはURLにないputの本体でそれを送ります。 安らかなAPIを書いている場合は、Swaggerツールを見てください。非常に便利です。 –

+0

ダニエル - ありがとう、あなたのコメントが、私の質問は、APIをattaskするより具体的です。この文脈では些細なwebclientを使用して.NetアプリケーションからAPIを消費しています。まずは、APIが "\" charを値として受け入れる方法を理解する必要があります。その情報があれば、希望のフォーマットでリクエストを渡すことができます。私はAPIを特定する答えを探しています。 – Paalya

関連する問題