gpt4 book ai didi

c++ - POCO Net C++ 库中的代理身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:16 25 4
gpt4 key购买 nike

我已经使用 Poco Net 库一段时间了,它非常好。非常方便且易于理解。

我能够设置一个代理地址,它正确地显示需要 407 代理授权。我认为

HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
req.setCredentials(scheme, authInfo);

我在 scheme 中尝试了“basic”、“plaintext”等值,在 authInfo 中尝试了“user:password”。它似乎不起作用。 Google 没有帮助。

以前有人用 Poco Net 做过吗?还是用法很明显,并且由于我对代理身份验证的无知而无法使其正常工作?请指教。

编辑: 经过更多尝试后,我认为当远程服务器需要身份验证信息进行登录时,会使用 setCredentials 函数。我一直无法找到使用 Poco Net 库进行代理身份验证的方法。不过,我能够设置代理服务器和端口。如果只有一个没有身份验证的代理服务器,这就是我想要的:

HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("host", port);
session.sendRequest(req);

需要帮助。

编辑: 根据@StackedCrooked 建议的解决方案,我尝试在发出请求之前将代理身份验证详细信息设置到请求 header ,并且在互联网上找到的另一种方法中,我设置了代理身份验证详细信息仅在发出初始请求后出现 407 错误,然后再次发出请求。这两种方法都继续给出相同的 407 错误。我当前的代码如下所示:

HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("10.7.128.1", 8080);
req.set("Proxy-Authentication", "Basic bGVlbGE6bGVlbGExMjM=");
session.sendRequest(req);

最佳答案

您可能需要将代理授权字段添加到 HTTP header 。 Poco 的 HTTPRequest 类对此没有专门的方法。但是,由于它公开继承了 NameValueCollection 类,您可以这样设置它:

req.set("Proxy-Authorization" , "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");

其中 QWxhZGRpbjpvcGVuIHNlc2FtZQ== 是“阿拉丁:芝麻开门”的 base64 编码版本。

一旦您了解了一些 HTTP 协议(protocol),许多这些问题就会变得更容易。我现在主要是在对自己说教:)

关于c++ - POCO Net C++ 库中的代理身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327485/

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