我正在尝试使用他们修改后的基本身份验证版本与 bit.ly 的 REST API 进行通信。但是,为了使其正常工作,HttpWebRequest 需要在第一个请求上附加凭据,但是,HttpWebRequest 不会在第一个请求上发送凭据,并且会在发送任何凭据之前等待 401,即使 PreAuthenticate 设置为 true(使用 PreAuthenticate 它将为所有后续请求发送凭据)。
我尝试了以下方法来让 HttpWebRequest 以 bit.ly 要求的方式工作:
(1) 以http://username:password@api.bi.ly/method格式发送请求。
bit.ly 不支持(因为这是基本身份验证的假实现,他们只检查标头)。
(2) 手动将“Authorization”标头注入HttpWebRequest。
在 .Net CF 中不可能,因为 Authorization 标头受到保护,并且任何修改受保护标头值的尝试都会失败并引发 ArgumentException。
(3) 继承另一个类中的HttpWebRequest 或WebRequest 以实现所需的行为。
不可能,因为 HttpWebRequest 类默认注册为 HTTP 和 HTTPS 方案的请求服务。尝试为这些方案注册不同的 WebRequest 后代将失败,因为不允许使用重复的前缀。
所以有人有什么建议吗?