usingvar httpClient = new HttpClient(); var url = $"{protocol}://{ip}:{port}/{api}?{parameter1}={value1}&{parameter2}={value2}"; var response = await httpClient.GetAsync(url); var responseContent = await response.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject<TData>(responseContent);
若要通过GET方法下载文件,可以通过如下方式:
1 2 3 4 5 6 7
usingvar httpClient = new HttpClient(); var downloadUrl = $"{protocol}://{ip}:{port}/{srcDir}/{srcFile}"; // 文件虚拟路径 var downloadPath = $"{disk}:\\{desDir}\\{desFile}"; // 下载物理路径 var response = await httpClient.GetAsync(downloadUrl); var fileStream = new FileStream(downloadPath, FileMode.OpenOrCreate, FileAccess.Write); await response.Content.CopyToAsync(fileStream); fileStream.Close();
若要下载超过2GB的文件,则需要通过如下方式:
1 2 3 4 5 6 7
usingvar httpClient = new HttpClient(); var downloadUrl = $"{protocol}://{ip}:{port}/{srcDir}/{srcFile}"; // 文件虚拟路径 var downloadPath = $"{disk}:\\{desDir}\\{desFile}"; // 下载物理路径 var response = await httpClient.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead); // 拿到响应头就返回 var fileStream = new FileStream(downloadPath, FileMode.OpenOrCreate, FileAccess.Write); await response.Content.CopyToAsync(fileStream); fileStream.Close();
usingvar httpClient = new HttpClient(); var downloadUrl = $"{protocol}://{ip}:{port}/{srcDir}/{srcFile}"; // 文件虚拟路径 var downloadPath = $"{disk}:\\{desDir}\\{desFile}"; // 下载物理路径 var response = await httpClient.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead); var fileStream = new FileStream(downloadPath, FileMode.OpenOrCreate, FileAccess.Write);
usingvar httpClient = new HttpClient(); var url = $"{protocol}://{ip}:{port}/{api}"; var stringContent = new StringContent(JsonConvert.SerializeObject(new { parameter1 = "value1", parameter2 = "value2" }), Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync(url, stringContent); var responseContent = await response.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject<TData>(responseContent);
usingvar httpClient = new HttpClient(); var url = $"{protocol}://{ip}:{port}/{api}"; usingvar formData = new MultipartFormDataContent { { new StringContent("value1"), "parameter1" }, { new StringContent("value2"), "parameter2" } }; var response = await httpClient.PostAsync(url, formData); var responseContent = await response.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject<TData>(responseContent);
若要添加文件流参数(.NET中使用IFormFile接收), 可使用以下方式:
1 2 3 4 5 6 7
var downloadUrl = Path.Combine(new DirectoryInfo(AppContext.BaseDirectory).Parent.FullName, "Upload", fileMd5); using FileStream stream = System.IO.File.OpenRead(downloadUrl); usingvar memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); byte[] fileBytes = memoryStream.ToArray();
usingvar httpClient = new HttpClient(); var url = $"{protocol}://{ip}:{port}/{api}"; var urlEncodedContent = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("parameter1","value1"), new KeyValuePair<string, string>("parameter2[0]","value2"), // parameter2为数组类型 new KeyValuePair<string, string>("parameter2[1]","value3") }); var response = await httpClient.PostAsync(url, urlEncodedContent); var responseContent = await response.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject<TData>(responseContent);