无法通过HttpClient PostAsync发送数据

本文关键字:数据 PostAsync HttpClient | 更新日期: 2023-09-27 18:17:04

我使用HttpClient通过c#控制台应用程序使用post将数据发送到服务器。HttpClient PostAsync无法发布我试图以各种格式发送的数据即字符串内容,二进制内容,流内容,http内容通过字典对象但post为空,服务器返回请求无效异常下面是我的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Windows;
using System.Windows.Input;
using System.IO;
using System.Web;

namespace ConsoleApplication1
{
    class Program
    {
        string str = ""; int j = 0;
        static void Main(string[] args)
        {
            Program df = new Program();
            df.Started();
        }

         public async void Started()
         {
             string contentLength="0";
             try
             {
                 contentLength = await AccessTheWebAsync();
             }
             catch (Exception e)
             {
             }

             Console.WriteLine(contentLength);
         }
        async Task<string> AccessTheWebAsync()
        {  
            HttpClient client = new HttpClient();
            string token =  "qwerty1234";
            string test = "1";
            string postrequest = "<?xml version='1.0' encoding='UTF-8'?>" +
                              "<request> " +
                              "<rec>asdf1234</rec> " +
                              " <lid>9876</lid> " +
                              "</request> ";

            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict.Add("token", token);
            dict.Add("test", test);
            dict.Add("request", postrequest);
            HttpContent content = new FormUrlEncodedContent(dict);
            Uri url = new Uri("http://example.com/"); 
            Task<HttpResponseMessage> getStringTask = client.PostAsync(url, content);    
            HttpResponseMessage httpmesssage = await getStringTask;
            Stream respons = await httpmesssage.Content.ReadAsStreamAsync();
            StreamReader sr = new StreamReader(respons);
            string response =  sr.ReadToEnd();
            return response;
        }

        }
}

thanks in advance

无法通过HttpClient PostAsync发送数据

在控制台应用程序中,您需要等待操作完成,可以使用Task.Wait, Console.ReadKey或类似的操作。同时,避免使用async void:

static void Main(string[] args)
{
    Program df = new Program();
    df.StartedAsync().Wait();
}
public async Task StartedAsync()