在手动代理设置的情况下,以下用于在Qt中设置代理的代码失败

时间:2012-08-12 06:54:23

标签: qt

代码有什么问题:

如果我使用系统代理,则显示的错误是“连接被拒绝” 如果我使用手动代理(代理地址相同),则显示的错误是“找不到主机”

代理服务器是squid,代理地址:172.16.28.11,端口:3128

此外,它也不适用于使用“tor”或动态端口转发创建的localhost代理!

if(settDialog.ui->no_proxy->isChecked())
{
    QNetworkProxyFactory::setUseSystemConfiguration (false);
    QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);
}
else if(settDialog.ui->use_s_proxy->isChecked())
{
    QNetworkProxyFactory::setUseSystemConfiguration (true);
}
else if(settDialog.ui->man_proxy->isChecked())
{
    QNetworkProxyFactory::setUseSystemConfiguration (false);
    proxy.setHostName(settDialog.ui->proxy_addr->text());
    proxy.setPort(settDialog.ui->port_num->value());
    if(settDialog.ui->proxyType->currentIndex()==0)
        proxy.setType(QNetworkProxy::HttpProxy);
    else if(settDialog.ui->proxyType->currentIndex()==1)
        proxy.setType(QNetworkProxy::Socks5Proxy);
    else if(settDialog.ui->proxyType->currentIndex()==2)
        proxy.setType(QNetworkProxy::FtpCachingProxy);
    proxy.setHostName(settDialog.ui->username->text());
    proxy.setPassword(settDialog.ui->pwd->text());
    QNetworkProxy::setApplicationProxy(proxy);
}

1 个答案:

答案 0 :(得分:2)

我可能过度简化了一些事情,但这看起来像是一个简单的错误API调用。

proxy.setHostName是您定义代理服务器主机名的地方,您可以通过proxy.setUser API设置用户名,即:

proxy.setUser(settDialog.ui->username->text());