无法将 curl 请求转换为 asp.net 核心中的 HttpClient/AnyOtherPackage

unable to convert curl request to HttpClient/AnyOtherPackage in asp.net core

我有一个有效的 curl 请求:

curl --insecure -X POST 'https://someurl' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'k1=v1' --data-urlencode 'k2=v2' --data-urlencode 'k3=v3' --data-urlencode 'k4=v4' --data-urlencode 'k5=v5'

我已经尝试了 SO 的多种解决方案,但不幸的是,我无法将其转换为 HttpClient 请求,我得到了 BadRequest。我的代码是:

        var client = new HttpClient();

        // var dict = new Dictionary<string, string>();
        // dict.Add("k1", "v1");
        // dict.Add("k2", "v2");
        // dict.Add("k3", "v3");
        // dict.Add("k4", "v4");

        var request = new HttpRequestMessage(HttpMethod.Post,
            "https://someurl");
        request.Content = new StringContent("{\"k1\":\"v1\",\"k2\":\"v2\",\"k3\":\"v3\",\"k4\":\"v4\"}",
            Encoding.UTF8,
            "application/x-www-form-urlencoded");//CONTENT-TYPE header

        request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

        // request.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

        // var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(dict) };
        // var res = client.SendAsync(request);
        client.SendAsync(request)
            .ContinueWith(responseTask =>
            {
                // responseTask had badrequest status in it
            });

这可以更短:

var client = new HttpClient();

var data = new Dictionary<string,string>() { { "key","val"},{"key","val"},{"key","val"},{"key","val"} };

// or var data = new List<KeyValuePair<string, string>> { {new KeyValuePair<string, string>( "key","v")},{new KeyValuePair<string, string>( "key","v")},{new KeyValuePair<string, string>( "key","v")},{new KeyValuePair<string, string>( "key","v")}};
        
   var Content = new FormUrlEncodedContent(data);

   var res = client.PostAsync("post uri",Content).Result;
        
    Console.WriteLine(res);