HttpSendRequest上出现12157错误(Google Distancematrix)

时间:2017-03-26 13:43:30

标签: api google-maps delphi ssl delphi-7

我使用google distancematrix来计算员工的差旅费用。这一切都在前一段时间都很好,并且对于几个在位置上运行它的客户也是如此。

现在我正在研究一个错误(这与这个API无关),当我从调试环境调用API时,我得到:

" HttpSendRequest错误12157:安全通道支持发生错误"

当我从浏览器发出相同的请求时,一切正常,我得到了我要求的XML文件。

这是严格的本地问题;在客户端站点,距离计算得很好。

这是我使用的代码:

function Https_Get(const ServerName,Resource : string;Var Response:AnsiString): Integer;
const
  BufferSize=1024*64;
var
  hInet    : HINTERNET;
  hConnect : HINTERNET;
  hRequest : HINTERNET;
  ErrorCode : Integer;  
  lpvBuffer : PAnsiChar;
  lpdwBufferLength: DWORD;  
  lpdwReserved    : DWORD;
  dwBytesRead     : DWORD;  
  lpdwNumberOfBytesAvailable: DWORD;  
begin 
  Result  :=0;  
  Response:='';  

hConnect := InternetConnect(hInet, PChar(ServerName), INTERNET_DEFAULT_HTTPS_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
if hConnect=nil then
begin
  ErrorCode:=GetLastError;
  raise Exception.Create(Format('InternetConnect Error %d Description %s',[ErrorCode,GetWinInetError(ErrorCode)]));
end;

try
  //make the request
  hRequest := HttpOpenRequest(hConnect, 'GET', PChar(Resource), HTTP_VERSION, '', nil, INTERNET_FLAG_SECURE, 0);
  if hRequest=nil then
  begin 
    ErrorCode:=GetLastError;  
    raise Exception.Create(Format('HttpOpenRequest Error %d Description %s',[ErrorCode,GetWinInetError(ErrorCode)]));  
  end;  

  try 
    //send the GET request  
    if not HttpSendRequest(hRequest, nil, 0, nil, 0) then 
    begin 
      ErrorCode:=GetLastError;  
      raise Exception.Create(Format('HttpSendRequest Error %d Description %s',[ErrorCode,GetWinInetError(ErrorCode)]));  
    end;  

在别处编码:

  sServer    = 'maps.googleapis.com';
  sParams   = '/maps/api/distancematrix/xml?origins=%s+NL&destinations=%s+NL&sensor=false';

...
     ResponseCode:=Https_Get(sServer,Format(sParams,[PostcodeVan, PostcodeNaar]), Response);

PostcodeVan和PostcodeNaar是两个邮政编码并正确填写。代码在HttpSendRequest语句中取消。

有人有任何想法吗?特别是它在浏览器中的(服务器+资源)链接工作正常的事实让我感到惊讶!

提前致谢!

0 个答案:

没有答案