1

我正在尝试向通过 heroku 托管的 Neo4j 实例发出 REST 请求。服务器设置有基本身份验证。

这是我从 Heroku 提供的网址(注意尾部斜杠):http://username:password@instance.hosted.neo4j.org:123/db/data /

我正在使用 RestSharp 连接到这个实例。但是,RestSharp 将删除尾部斜杠。代码。生成的 url 变为:http://username:password@instance.hosted.neo4j.org:123/db/data

这导致一个HTTP 301to(注意尾部斜杠):http://username:password@instance.hosted.neo4j.org:123/db/data/

问题是 Authorization Header 没有跨重定向MSDN 保留。此重定向导致HTTP 401.

有什么明显的方法可以解决这个问题吗?我尝试了以下方法:

  • 提供 2 个尾部斜杠/db/data//,因此 RestSharp 只删除了一个斜杠,但留下了一个。这不起作用,因为其他请求的格式无效:/db/data//query/stuff
  • 使用CredentialCache类。这可行,但每个操作会产生 2 个请求(一个用于 401 挑战,另一个用于响应)
  • IAuthenticationModlue- 在 MSDN 中找到了关于此的最少信息,但在尝试自定义类之后,这仍会导致前面提到的双跳问题。
  • 将初始休息请求更改new RestRequest("/", Method.GET);new RestRequest("", Method.GET);- 唯一的问题是我不想修改我的应用程序和 RestSharp 之间的开源项目以满足我的特定需求。RestSharp 删除所有结尾斜杠
4

1 回答 1

0

来自谷歌集团的皮特:

请求“根资源”的一个有点烦人的解决方法是使用:new RestRequest (“/”),尾随空格将阻止 RestSharp 修剪斜线,但会被(大多数)服务器忽略。

https://groups.google.com/forum/?fromgroups#!topic/restsharp/8mBmaXksmsg

于 2012-06-21T03:05:42.133 回答