我一直在玩 Poco Net 库,它非常好。非常方便且易于理解。
我能够设置代理地址,并且正确地说需要 407 代理授权。我以为
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
req.setCredentials(scheme, authInfo);
我尝试了方案中的“基本”、“纯文本”和 authInfo 中的“用户:密码”等值。它似乎不起作用。谷歌没有帮助。
以前有人用 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 建议的解决方案,我尝试在发出请求之前将代理身份验证详细信息设置为请求标头,并且在互联网上找到的另一种方法中,我仅在发出初始请求和 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);