記事一覧

Delphi WinRT HttpClientについて

以前 デブキャンでも実は説明したんですが、WinRTHttpClient利用方法です。前回のブログ「RetrieveFeedAsync RSSフィードの取得」とにたような実装方法です。Delphi 10.3WinRT HttpClientは、Winapi.WebRT.pasに入っています。インスタンス立てるだけであれば下記のように記述できます。
富士山

procedure TForm1.Button1Click(Sender: TObject);
var
  httpClient: Http_IHttpClient;
begin
  httpClient := THttp_HttpClient.Create();
end;

Http_IHttpClientIInspectable継承のインターフェイスです。RSSフィードのときと違うのはここまでできればもう実装できているも同じというところでしょうか。

あとは、作成した変数httpClientに対しGETやPOSTにURLをあたえるだけです。


GETメソッドを使うシンプルなGetAsync()を使うと下記のように記述できます。

procedure TForm1.Button1Click(Sender: TObject);
var
  httpClient: Http_IHttpClient;
  ws1: TWindowsString;
  hs1: HSTRING;
  hs2: HSTRING;
  url: IUriRuntimeClass;
  res: IAsyncOperationWithProgress_2__Http_IHttpResponseMessage__Http_HttpProgress;
  s1: String;
begin
  httpClient := THttp_HttpClient.Create();
  ws1 := TWindowsString.Create('https://mjeld.com/');
  hs1 := ws1;
  url := TUri.CreateUri(hs1);
  res := httpClient.GetAsync(url);
  Await(res, kansu);
  hs2 := res.GetResults().Content.ReadAsStringAsync.GetResults;
  s1  := TWindowsString.HStringToString(hs2);
  Memo1.Clear;
  Memo1.Lines.Append(s1);
end;

s1を見ると下のようにGETしたデータが入っています。

ReadAsStringAsync.GetResults

気が向いたらPOSTも書きます。

通天閣

Comments

Post a comment

Private comment