解决代理身份验证所需问题

时间:2011-05-16 18:02:33

标签: delphi proxy wininet proxy-authentication

我编写了一个Delphi应用程序,它需要与远程Web服务器进行通信。我将INTERNET_OPEN_TYPE_PRECONFIG标志传递给InternetOpen函数以初始化我的应用程序对WinINet函数的使用,并通过这样做我的应用程序从注册表中检索用户的Internet配置。

  NetHandle := InternetOpen('WebTool', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(NetHandle) then
  begin
    try
      hConnect := InternetConnect(NetHandle, PChar(ServerName), ServerPort,
                      nil, nil, INTERNET_SERVICE_HTTP, 0, 1);
      if Assigned(hConnect) then
      begin
        try
          // Open the request
          hRequest := HttpOpenRequest(hConnect, PChar('POST'),
                          PChar(ServerScript), nil, nil, nil,
                          HTTPOpenRequestFlags, 0);
          if Assigned(hRequest) then
          begin

也许由于我的无知,我相信这可以使用用户的特定互联网设置与远程网络服务器进行通信,无论是直接连接还是通过代理。它当然可以通过我公司的代理服务器工作。

但是,我现在遇到了一个客户,上面的客户不允许他访问。他改为看到了“需要代理身份验证”(HTTP状态代码407)。

这是我的应用应该处理的内容(例如,提供一个表单来输入代理身份验证详细信息并通过我的HTTP请求传递它们)?有没有办法自动获取这些信息?

或者这仅仅是客户IT部门可以轻松解决的配置问题?

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:1)

您可能需要处理身份验证,具体取决于代理支持的auth方法(它将在407响应中告诉您)。见http://msdn.microsoft.com/en-us/library/aa384220(VS.85).aspx