1

パスの一部として暗号化されたキーを渡す必要があるRESTサービスがあります。私はキーをurlencodeし、ブラウザに配置するだけでうまく機能します。ただし、私のコードではWebRequest.Createを使用しており、暗号化キーによって生成されたバックスラッシュを置き換えるように見えます。これにより、サービスはルートの一部であると見なし、404で失敗します。これは.net Frameworkの既知の欠陥ですか、それとも何かが足りないのでしょうか。かなり大したことのようです。

編集:(簡略化されたサンプルコード)

文字列キー=System.Web.HttpUtility.UrlEncode(TripleDESEncode( "sharedkey")); string uri = string.Format( "http://mydomail.com/deposit/{0}。{1}"、key、 "json");

//uriはここで次のようになりますhttp://mydomail.com/deposit/FHnapfF5yBCEKt3%2f3YOQ5g%3d%3d.json

HttpWebRequest webRequest =(HttpWebRequest)WebRequest.Create(uri);

//HttpWebRequestのアドレスはこれです...//http://mydomail.com/deposit/FHnapfF5yBCEKt3/3YOQ5g%3d%3d.json

うまくいけば、これがお役に立てば幸いです。

4

2 に答える 2

1

わかりました。結局、クライアントと妥協し、base64に直接シリアル化するために暗号化をスキップしました。これは、私が通過しているものの性質のためにのみ受け入れられました。将来的には暗号化が必要になりますが、これは修正が必要な大きな問題だと思います。少なくとも回避策が提案されています。出会ったら投稿します。

みんな、ありがとう!

最終コード:

HttpUtil.UrlEncode(Convert.ToBase64String(Encoding.UTF8.GetBytes( "sharedKey")));

于 2012-04-17T21:46:51.803 に答える
0

UrlPathEncode値がクエリ文字列の一部ではなくパスの一部である場合は、このメソッドを使用します。

string key = System.Web.HttpUtility.UrlPathEncode(TripleDESEncode("sharedkey"));
于 2012-04-16T17:15:21.453 に答える