首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POCO网C++库中的代理认证

POCO网C++库中的代理认证
EN

Stack Overflow用户
提问于 2009-08-25 10:52:20
回答 2查看 4.8K关注 0票数 6

我已经和Poco网络库玩了一段时间了,它很不错。非常方便,容易理解。

我能够设置一个代理地址,这是说407代理授权是必需的,正确的。我以为

代码语言:javascript
复制
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
req.setCredentials(scheme, authInfo);

我尝试了一些值,比如方案中的"basic“、”明文“和authInfo中的"user:password”。似乎不起作用。谷歌帮不上忙。

以前有人用Poco网做过这种事吗?或者,由于我对代理身份验证的无知,这种用法很明显,而且我无法让它工作?请指点。

编辑:经过更多的操作后,我认为在远程服务器等待身份验证信息登录时使用了setCredentials函数。我还没有找到一种使用Poco网络库进行代理身份验证的方法。不过,我能够设置代理服务器和端口。如果只有一个没有身份验证的代理服务器,我就会这么做:

代码语言:javascript
复制
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("host", port);
session.sendRequest(req);

需要帮助。

编辑:基于@Stacked弯曲建议的解决方案,我尝试在发出请求之前将代理身份验证详细信息设置为请求头,而在internet上发现的另一种方法中,我只在发出初始请求后设置代理详细信息,然后出现407错误,然后再次发出请求。两种方法都继续给出相同的407错误。我的当前代码如下:

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-25 12:40:47

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

代码语言:javascript
复制
req.set("Proxy-Authorization" , "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");

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

只要稍微了解一下HTTP协议,这些问题就会变得更容易。我现在主要是自言自语:)

票数 2
EN

Stack Overflow用户

发布于 2009-08-25 11:18:12

我自己也没有使用过这个,但是您看过HTTPBasicCredentials类了吗?它通过其身份验证方法结束对req.setCredentials的调用。你最终会得到这样的结果:

代码语言:javascript
复制
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
HTTPBasicCredentials cred("user", "password");
cred.authenticate(req);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1327485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档