简体   繁体   English

在C#中使用HttpClient发布xml

[英]Post xml using HttpClient in C#

I have a problem with passing xml file from client to api. 将xml文件从客户端传递到api时遇到问题。 I use HttpClient to connect. 我使用HttpClient进行连接。 My code: 我的代码:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
        /*var serializer = new XmlSerializer(typeof(InitUploadType));
        serializer.Serialize(data);*/
        XmlDocument doc = new XmlDocument();
        doc.Load("initupload-sign.xml");

        WebRequestHandler handler = new WebRequestHandler();
        X509Certificate2 certificate = new X509Certificate2("cert.crt");
        handler.ClientCertificates.Add(certificate);


        HttpClient client = new HttpClient(handler);
        client.BaseAddress = new Uri("https://test-e-dokumenty.mf.gov.pl");
        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));

        var response = client.PostAsJsonAsync<XmlDocument>("/api/Storage/InitUploadSigned", doc).Result;

        return response.ToString();

I am receiving Bad Request 400. 我收到错误请求400。

Can you please try the below code I have modified? 你可以试试下面我修改过的代码吗?

            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
            /*var serializer = new XmlSerializer(typeof(InitUploadType));
            serializer.Serialize(data);*/
            XmlDocument doc = new XmlDocument();
            doc.Load("initupload-sign.xml");

            WebRequestHandler handler = new WebRequestHandler();
            X509Certificate2 certificate = new X509Certificate2("cert.crt");
            handler.ClientCertificates.Add(certificate);

            HttpClient client = new HttpClient(handler);
            client.BaseAddress = new Uri("https://test-e-dokumenty.mf.gov.pl");
            client.Headers.Set("Content-Type", "application/xml");
            var response = client.UploadString(path, doc.OuterXml);

            return response.ToString();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM