Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将curl请求转换为asp.net core中的HttpClient/AnyOtherPackage_C#_Asp.net Core_Dotnet Httpclient - Fatal编程技术网

C# 无法将curl请求转换为asp.net core中的HttpClient/AnyOtherPackage

C# 无法将curl请求转换为asp.net core中的HttpClient/AnyOtherPackage,c#,asp.net-core,dotnet-httpclient,C#,Asp.net Core,Dotnet Httpclient,我有一个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尝

我有一个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 dict=新字典();
//添加(“k1”、“v1”);
//添加(“k2”、“v2”);
//添加(“k3”、“v3”);
//添加(“k4”、“v4”);
var请求=新的HttpRequestMessage(HttpMethod.Post,
"https://someurl");
request.Content=newstringcontent(“{\“k1\”:“v1\”,“k2\”:“v2\”,“k3\”:“v3\”,“k4\”:“v4\”),
Encoding.UTF8,
“application/x-www-form-urlencoded”)//内容类型标题
request.Content.Headers.ContentType=新的MediaTypeHeaderValue(“application/x-www-form-urlencoded”);
//request.Headers.Add(“内容类型”、“应用程序/x-www-form-urlencoded”);
//var req=newhttprequestmessage(HttpMethod.Post,url){Content=newformurlencodedcontent(dict)};
//var res=client.sendaync(请求);
client.sendaync(请求)
.ContinueWith(responseTask=>
{
//responseTask中的请求状态为badrequest
});
这可以缩短:

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);

var-client=new-HttpClient();
var data=newdictionary(){{“key”,“val”},{“key”,“val”},{“key”,“val”},{“key”,“val”},{“key”,“val”};
//或var data=new List{{new KeyValuePair(“key”,“v”)}、{new KeyValuePair(“key”,“v”)}、{new KeyValuePair(“key”,“v”)}、{new KeyValuePair(“key”,“v”)};
var内容=新的FormUrlEncodedContent(数据);
var res=client.PostAsync(“post uri”,Content).Result;
控制台写入线(res);

表单url编码的内容不使用StringContent。以创建
FormUrlEncodedContent
其余内容为例,好吗@CrowcoderIf如果我对它进行代码审查,它将失败,但代码审查并非如此。我一眼就注意到的唯一实际错误是您使用的内容类型。谢谢您的回复,但仍然是一个错误的请求。我们不需要为
--header'内容类型:application/x-www-form-urlencoded'
?@SafiUllah
内容类型
header与内容相关,而不是与实际请求相关,因此
FormUrlEncodedContent
会处理它,而
StringContent
是手动方法,因为您应该对内容进行编码,并且指定类型,这样就可以了。确保满足端点的请求要求。不需要其他任何东西。卷曲请求工作正常…感谢您的回答,它工作正常。。。把它标为答案