Delphi 10.3のWinapi.WinHTTP.pasは、Windows HTTP Services(WinHTTP) winhttp.hをラップしたライブラリです。DelphiでのHTTPClientはTNetHTTPClientなど簡単ないい方法がたくさんあります。
従って直接WinHTTPを使うことはありません。
下記はWinapi.WinHTTPのシンプルなExampleです。
従って直接WinHTTPを使うことはありません。
下記はWinapi.WinHTTPのシンプルなExampleです。
procedure TForm1.FormCreate(Sender: TObject); var hand1, hConn, hReq: HINTERNET; begin hand1 := WinHttpOpen('Mohri/1.0', WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if Assigned(hand1) then begin hConn := WinHttpConnect(hand1,'mjeld.com', INTERNET_DEFAULT_PORT, 0); if Assigned(hConn) then begin hReq := WinHttpOpenRequest(hConn, 'GET', 'index.php', nil, WINHTTP_NO_REFERER, WINHTTP_NO_REFERER, 0); if Assigned(hReq) then begin var bRes:LongBool := WinHttpSendRequest(hReq,WINHTTP_NO_ADDITIONAL_HEADERS,0,WINHTTP_NO_REQUEST_DATA,0,0,0); if bRes then begin var ss := TStringStream.Create('', TEncoding.UTF8); OutputDebugString('OK'); if WinHttpReceiveResponse(hReq, nil) then begin var s1,d1: DWORD; var buf: TBytes; WinHttpQueryDataAvailable(hReq, @s1); SetLength(buf, s1 + 1); WinHttpReadData(hReq,buf[0],s1,@d1); ss.WriteBuffer(buf, d1); ss.Position := 0; OutputDebugString(PChar(ss.DataString)); //取得したデータをデバッグ出力 end; end; end; WinHttpCloseHandle(hReq); end; WinHttpCloseHandle(hConn); end; WinHttpCloseHandle(hand1); end;
前回「怪獣農場」ブログで「WinRT HttpClient」をDelphiで使ったコードを紹介しています。
https://mojel.blog.fc2.com/
コメント