【发布时间】:2012-07-13 17:56:58
【问题描述】:
如何强制Uri 或HttpWebRequest 允许包含/ 和%2f 的uri,如下所示?
http://localhost:55672/api/exchanges/%2f/MyExchange
我试过了……
WebRequest request =
HttpWebRequest.Create("http://localhost:55672/api/exchanges/%2f/MyExchange");
...还有这个...
Uri uri = new Uri("http://localhost:55672/api/exchanges/%2f/MyExchange", true);
WebRequest request = HttpWebRequest.Create(uri);
...还有这个...
UriBuilder builder = new UriBuilder();
builder.Port = 55672;
builder.Path = "api/exchanges/%2f/MyExchange";
WebRequest request = HttpWebRequest.Create(builder.Uri);
但是,在所有这些情况下,request.RequestUri 以 http://localhost:55672/api/exchanges///MyExchange 结束,request.GetResponse() 产生 404 响应。
仅供参考,我正在尝试使用 RabbitMQ 的 HTTP API,并在 Chrome 中键入 Url 会产生预期的 JSON 结果。
【问题讨论】:
-
我也试过
HttpWebRequest.Create("http://localhost:55672/api/exchanges/%252f/PrintConnector");有趣的是这会产生与上面相同的request.RequestUri,但request.RequestUri.LocalPath被正确编码为/api/exchanges/%2f/MyConnector -
FWIW 我已经为 RabbitMQ 管理 API 构建了一个 .NET 客户端,这可能会为您节省一些工作:nuget.org/packages/EasyNetQ.Management.Client