2012-04-19 40 views
1

Webリクエストを使用してLinkedIn APIにいくつかの残りの呼び出しを書き、エンコードの問題が発生しました.LinkedIn APIには、試しているルックアップのパラメータの1つとしてエンコードされたURIが必要です走る。.Net WebRequest.CreateデコードされたエンコードされたURIを作成する

私たちは.NetのWebRequest.Createを通してapiを呼び出しています。 URIを渡すとそれをデコードし、結果として呼び出しからデータを取得することができません。このようなURIを開こうとしています

http://api.linkedin.com/v1/people/url=http%3A%2F%2Fwww.linkedin.com%2Fin%2FProfileName 

渡されたURIのデコードを停止するメカニズムがWebrequestクラスにありますか。またはこれを回避するには?

+0

そのURIを 'WebRequest.Create'に渡すと、どのような結果になりますか?つまり、リクエストをすると、 'WebRequest'はサーバに何を送信しますか?また、 'WebRequest.Create(string)'または 'WebRequest.Create(uri)'を呼び出していますか? –

+0

webrequest.createがmy URLと呼ばれるとき、上記のエンコードされたフォームから非エンコードされたフォームに変換されます。エンコードされたクエリ文字列データが必要なため、APIでリンクできません。 URLを3回エンコードすることで回避できますが、それは控えめです。 – u07ch

答えて

1

私はこれがうまくいくとは確信していませんが、それはいくつかの約束を示しています。

static readonly string UrlString = 
    "http://api.linkedin.com/v1/people/url=http%3A%2F%2Fwww.linkedin.com%2Fin%2FProfileName"; 


Uri myUri = new Uri(Uri.EscapeUriString(UrlString)); 
Console.WriteLine(myUri.ToString()); // this is only to show the string for debugging 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri); 

Console.WriteLineからの出力には、希望の文字列と同じ形式があります。そのウリをWebRequest.Createに渡すと、あなたが望むことをうまくやることができます。

+0

ビルドイン関数のデコードを止めるために私のURLを3倍エンコードしてしまいました。それを2回するだけでは十分ではありませんでした(これは既にURLに渡されてエンコードされていました)... MSはこれをしないメソッドを追加する必要があります... – u07ch

関連する問題