16dbb5987Sopenharmony_ci// Copyright (c) 2023 Huawei Device Co., Ltd.
26dbb5987Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
36dbb5987Sopenharmony_ci// you may not use this file except in compliance with the License.
46dbb5987Sopenharmony_ci// You may obtain a copy of the License at
56dbb5987Sopenharmony_ci//
66dbb5987Sopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
76dbb5987Sopenharmony_ci//
86dbb5987Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software
96dbb5987Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS,
106dbb5987Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
116dbb5987Sopenharmony_ci// See the License for the specific language governing permissions and
126dbb5987Sopenharmony_ci// limitations under the License.
136dbb5987Sopenharmony_ci
146dbb5987Sopenharmony_ci//! This is a simple asynchronous HTTP client example using the
156dbb5987Sopenharmony_ci//! ylong_http_client crate. It demonstrates creating a client, making a
166dbb5987Sopenharmony_ci//! request, and reading the response asynchronously.
176dbb5987Sopenharmony_ci
186dbb5987Sopenharmony_ciuse ylong_http_client::async_impl::{Body, Client, Downloader, Request};
196dbb5987Sopenharmony_ciuse ylong_http_client::HttpClientError;
206dbb5987Sopenharmony_ci
216dbb5987Sopenharmony_cifn main() -> Result<(), HttpClientError> {
226dbb5987Sopenharmony_ci    let handle = ylong_runtime::spawn(async move {
236dbb5987Sopenharmony_ci        client_send().await.unwrap();
246dbb5987Sopenharmony_ci    });
256dbb5987Sopenharmony_ci
266dbb5987Sopenharmony_ci    let _ = ylong_runtime::block_on(handle);
276dbb5987Sopenharmony_ci    Ok(())
286dbb5987Sopenharmony_ci}
296dbb5987Sopenharmony_ci
306dbb5987Sopenharmony_ciasync fn client_send() -> Result<(), HttpClientError> {
316dbb5987Sopenharmony_ci    // Creates a `async_impl::Client`
326dbb5987Sopenharmony_ci    let client = Client::new();
336dbb5987Sopenharmony_ci
346dbb5987Sopenharmony_ci    // Creates a `Request`.
356dbb5987Sopenharmony_ci    let request = Request::builder()
366dbb5987Sopenharmony_ci        .url("https://www.example.com")
376dbb5987Sopenharmony_ci        .body(Body::empty())?;
386dbb5987Sopenharmony_ci
396dbb5987Sopenharmony_ci    // Sends request and receives a `Response`.
406dbb5987Sopenharmony_ci    let response = client.request(request).await?;
416dbb5987Sopenharmony_ci
426dbb5987Sopenharmony_ci    // Reads the body of `Response` by using `BodyReader`.
436dbb5987Sopenharmony_ci    let _ = Downloader::console(response).download().await;
446dbb5987Sopenharmony_ci    Ok(())
456dbb5987Sopenharmony_ci}
46