Advertisement
Guest User

Untitled

a guest
Jan 10th, 2018
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. program Project35;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils, WinInet, Windows, Classes;
  7.  
  8. Function sslGet(Const AServer, AUrl : string): AnsiString;
  9. var
  10. aBuffer : Array[0..4096] of Char;
  11. BufStream : TMemoryStream;
  12. sMethod : AnsiString;
  13. BytesRead : Cardinal;
  14. pSession : HINTERNET;
  15. pConnection : HINTERNET;
  16. pRequest : HINTERNET;
  17. LUsername: string;
  18. LPassword: string;
  19. LProxy, LBypass: string;
  20. LAgent: string;
  21. LStatusCode, LStatusLen, LIndex : DWORD;
  22. begin
  23. Result := '';
  24. LUsername := 'User-002' ;
  25. LPassword := 'test2';
  26. LProxy := 'myproxyserver:808';//https=https://
  27. LBypass := '<local>';
  28. LAgent := 'Bo-Test';
  29. //pSession := InternetOpen(PChar(LAgent), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  30. pSession := InternetOpen(PChar(LAgent), INTERNET_OPEN_TYPE_PROXY , PChar(LProxy), PChar(LBypass), 0);
  31. //pSession := InternetOpen(PChar(LAgent), INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY , nil, nil, 0);
  32.  
  33. if Assigned(pSession) then
  34. try
  35.  
  36. // pConnection := InternetConnect(pSession, PChar(AServer), INTERNET_DEFAULT_HTTPS_PORT, PChar(LUsername), PChar(LPassword), INTERNET_SERVICE_HTTP, 0, 0);
  37. pConnection := InternetConnect(pSession, PChar(AServer), INTERNET_DEFAULT_HTTPS_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
  38.  
  39. if Assigned(pConnection) then
  40. try
  41.  
  42. sMethod := 'GET';
  43. pRequest := HTTPOpenRequest(pConnection, PChar(sMethod), PChar(AURL), nil, nil, nil,
  44. INTERNET_FLAG_SECURE or
  45. INTERNET_FLAG_KEEP_CONNECTION or
  46. INTERNET_FLAG_NO_CACHE_WRITE or
  47. INTERNET_FLAG_PRAGMA_NOCACHE or
  48. INTERNET_FLAG_NO_AUTH or
  49. INTERNET_FLAG_IGNORE_CERT_CN_INVALID or
  50. INTERNET_FLAG_IGNORE_CERT_DATE_INVALID or
  51. INTERNET_FLAG_NO_UI or
  52. INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS or
  53. SECURITY_FLAG_IGNORE_UNKNOWN_CA, 0); //or INTERNET_FLAG_NO_AUTH
  54.  
  55. if Assigned(pRequest) then
  56. try
  57.  
  58. if HTTPSendRequest(pRequest, nil, 0, nil, 0) then
  59. begin
  60. LStatusLen := SizeOf(LStatusCode);
  61. LIndex := 0;
  62. // expecting a 407 returned
  63. HttpQueryInfo(pRequest, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER,
  64. @LStatusCode, LStatusLen, LIndex);
  65. Write('Status code=');
  66. writeln(LStatusCode);
  67.  
  68. // resend after 407
  69. InternetSetOption(pRequest, INTERNET_OPTION_PROXY_USERNAME, PChar(LUsername) , length(LUsername));
  70. InternetSetOption(pRequest, INTERNET_OPTION_PROXY_PASSWORD, PChar(LPassword), length(LPassword));
  71. HTTPSendRequest(pRequest, nil, 0, nil, 0);
  72. HttpQueryInfo(pRequest, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER,
  73. @LStatusCode, LStatusLen, LIndex);
  74. Write('Resend status code=');
  75. writeln(LStatusCode);
  76.  
  77. BufStream := TMemoryStream.Create;
  78. try
  79.  
  80. while InternetReadFile(pRequest, @aBuffer, SizeOf(aBuffer), BytesRead) do
  81. begin
  82. if (BytesRead = 0) then Break;
  83.  
  84. BufStream.Write(aBuffer, BytesRead);
  85. end;
  86.  
  87. aBuffer[0] := #0;
  88. BufStream.Write(aBuffer, 1);
  89. Result := PChar(BufStream.Memory);
  90.  
  91. finally
  92. FreeAndNil(BufStream);
  93. end;
  94. end
  95. else begin
  96. Writeln(GetLastError());
  97. end;
  98.  
  99. finally
  100. InternetCloseHandle(pRequest);
  101. end;
  102.  
  103. finally
  104. InternetCloseHandle(pConnection);
  105. end;
  106.  
  107. finally
  108. InternetCloseHandle(pSession);
  109. end;
  110. end;
  111.  
  112. var
  113. StopEnter: string;
  114. begin
  115. try
  116. // the wsdl is only available with ssl, i.e., https://services.staging.referralnet.com.au/services/Referral_Service_51?wsdl
  117. // it is invalid for http://services.staging.referralnet.com.au/services/Referral_Service_51?wsdl
  118. Writeln(sslGet('services.staging.referralnet.com.au', '/services/Referral_Service_51?wsdl'));
  119. Write('Press Enter to stop ...');
  120. Readln(StopEnter);
  121. except
  122. on E:Exception do
  123. Writeln(E.Classname, ': ', E.Message);
  124. end;
  125. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement