2012-06-14 4 views
10

私はLinkedInからパブリックプロファイル情報を取得しようとしています。これを実現するには、私は
http://api.linkedin.com/v1/people/url=public-profile-urlを提供しなければなりません。ここで、public-profile-urlはURLエンコードされなければなりません。URIクラスを使用中にURLをエンコードします

問題は、HttpClient、WebRequestなどの.NETクラスが、提供されたURLを「標準化」していると思われるUriクラスを使用しているため、適切な書式の要求を送信できないことです。

URIでなければなりません:

http://api.linkedin.com/v1/people/url=http%3a%2f%2fwww.linkedin.com%2fin%2fiftachragoler

が、次のとおりです。このように

http://api.linkedin.com/v1/people/url=http://www.linkedin.com/in/iftachragoler

、私はLinkedInのから '不正な要求' を取得します。

Uri/UriBuilderにそのURLをデコードしないようにする方法はありますか?

+0

「http://api.linkedin.com/v1/people/url=」+ uri.ToString() 'のようなことをしていますか?それから、URIクラスは、それが何をすべきかを正確に実行しており、あなたはそれを間違っています。 – dtb

+0

実際、私は "http://api.linkedin.com/v1/people/url=" + Url.Encode(profileUrl)を実行していて、それをDotNetOpenAuthに渡します.DotNetOpenAuth自身がそれをUriBuilderに渡します。 –

+2

.NETにUrlクラスはありません。使用している実際のコードを表示してください。 – dtb

答えて

8

マイクロソフトが接続しているという報告があります。デフォルトでは、セキュリティ上の理由からエスケープされたスラッシュは許可されていません。

http://connect.microsoft.com/VisualStudio/feedback/details/94109/

そこから引用する:

私はLinkedInのAPIを使用しようと、私は次のリンク必要のある:あなたがURLフィールドがする必要が見ることができるように http://api.linkedin.com/v1/people/url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fyourlinkedinname:public

を逃げる。これを解決するには?

回答:

これはURI スキームがパス圧縮をサポートしている場合、サーバーを攻撃者に一般的な方法ですので、私たちは現在、エスケープスラッシュとドットが パスに表示されないようにしてください。

しかし、回避策のあるタブがあります。

http://msdn.microsoft.com/en-us/library/bb882619.aspx

http://msdn.microsoft.com/en-us/library/ee656539.aspx

<configuration> 
<uri> 
    <schemeSettings> 
    <clear/> 
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/> 
    </schemeSettings> 
</uri> 
</configuration> 

の場合:

は、.NET 4.0のために、あなたが設定ファイルを介してこれを制御することができます:.NET 4のためにそれらの一つは、app.configを追加することです.NETの前の.NETは、パラメータ "dontEscape"を持つUriクラスのコンストラクタでした。 .NET 4の場合、それは時代遅れです。

+0

ありがとう、男!これはトリックでした。Web.configにそのセクションを追加して、私はこの問題を解決しました。 –

0

二重にエスケープするとどうなりますか?

http://api.linkedin.com/v1/people/url=http%253a%252f%252fwww.linkedin.com%252fin%252fiftachragoler 
+1

私はそれを試みました。悲しいことに、うまくいきません:( –

関連する問題