gpt4 book ai didi

c# - 使用 URI 类时保持 url 编码

转载 作者:可可西里 更新时间:2023-11-01 09:10:17 26 4
gpt4 key购买 nike

我正在尝试从 LinkedIn 获取公开个人资料信息。为此,我必须提供
http://api.linkedin.com/v1/people/url=public-profile-url ,其中 public-profile-url 必须经过 URL 编码。

问题是 HttpClient、WebRequest 等 .NET 类使用的 Uri 类似乎“规范化”了所提供的 URL,因此我无法发送格式正确的请求。

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 收到了“Bad Request”。

有什么方法可以让 Uri/UriBuilder 不解码该 URL?

最佳答案

Microsoft connect 上有关于此的报告。出于安全原因,默认情况下不允许使用转义斜线。

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

从那里引用:

I try to use the LinkedIn api, for which I need the following link: http://api.linkedin.com/v1/people/url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fyourlinkedinname:public

As you can see the url field needs to be escaped. How to solve this?

回答:

We currently don't allow escaped slashes and dots to appear in the path because this is a common way to attacker a server when the URI scheme supports path compression.

但是有一个带有解决方法的选项卡。 .NET 4 其中之一是添加 app.config:

对于 .NET 4.0,您可以通过配置文件控制它:

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 之前的 .NET 是带有参数“dontEscape”的 Uri 类的构造函数。对于 .NET 4,它已过时。

关于c# - 使用 URI 类时保持 url 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11034569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com