提问者:小点点

是否有方法在C#中传递此contenttype“application/x-www-form-urlencoded;v=2.0”?


我试图用C语言复制CURL中的以下代码。请注意,这段代码使用curl时工作正常。我在用这个https://curl.olsh.me/创建请求。

curl-k-u“默认用户:机器人”-H”内容类型:application/x-www-form-urlencoded;v=2.0“-d”value=TRUE“”https://localhost/rw/rapid/symbol/RAPID/T_ROB1/EGMDemo/run_egm/data?mastership=implicit"

我已尝试将此命令转换为c#,到达线路时:

要求所容纳之物标题。ContentType=新的MediaTypeHeaderValue(“应用程序/x-www-form-urlencoded;v=2.0”);

我收到一个异常,应用程序/x-www-form-urlencoded; v=2.0无效。如何通过这种内容类型?如果这是不可能的http客户端有没有其他的方法来做到这一点?


    var handler = new HttpClientHandler();
    handler.ServerCertificateCustomValidationCallback = (requestMessage, certificate, chain, policyErrors) => true; 

    using (var httpClient = new HttpClient(handler))
    {
        using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost/rw/rapid/symbol/RAPID/T_ROB1/EGMDemo/run_egm/data?mastership=implicit"))
        {
            var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("Default User:robotics"));
            request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}"); 

            request.Content = new StringContent("value=TRUE");
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded;v=2.0"); 

            var response = await httpClient.SendAsync(request);
        }
    }



共1个答案

匿名用户

可以尝试直接使用请求。内容。标题。添加(内容类型,应用程序/x-ww-form-urlencoded; v=2.0);

MediaTypeHeaderValue仅支持为HTTP/1.1定义的标准媒体类型

编辑错误:)