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