Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 在C中使用HttpClient发布xml#_C#_.net_Xml_Post - Fatal编程技术网

C# 在C中使用HttpClient发布xml#

C# 在C中使用HttpClient发布xml#,c#,.net,xml,post,C#,.net,Xml,Post,我在将xml文件从客户端传递到api时遇到问题。我使用HttpClient进行连接。 我的代码: ServicePointManager.ServerCertificateValidationCallback+=(发件人、证书、链、sslPolicyErrors)=>true; /*var serializer=新的XmlSerializer(typeof(InitUploadType)); 序列化器。序列化(数据)*/ XmlDocument doc=新的XmlDocument(); doc.

我在将xml文件从客户端传递到api时遇到问题。我使用HttpClient进行连接。 我的代码:

ServicePointManager.ServerCertificateValidationCallback+=(发件人、证书、链、sslPolicyErrors)=>true;
/*var serializer=新的XmlSerializer(typeof(InitUploadType));
序列化器。序列化(数据)*/
XmlDocument doc=新的XmlDocument();
doc.Load(“initupload sign.xml”);
WebRequestHandler=新的WebRequestHandler();
X509Certificate2证书=新的X509Certificate2(“cert.crt”);
handler.ClientCertificates.Add(证书);
HttpClient=新的HttpClient(处理程序);
client.BaseAddress=新Uri(“https://test-e-dokumenty.mf.gov.pl");
client.DefaultRequestHeaders.Accept.Add(新的System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(“应用程序/xml”);
var response=client.PostAsJsonAsync(“/api/Storage/InitUploadSigned”,doc).Result;
返回response.ToString();

我收到了错误的请求400。

请尝试我修改的以下代码好吗

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

你能试试下面我修改过的代码吗

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

您可以使用类似fiddler的工具查看从客户端发送/接收的内容。它将帮助您了解发生了什么,因为HTTP 400错误可能意味着很多事情。我使用IE浏览器访问url,但没有获得xml数据。您可以使用fiddler之类的工具查看从客户端发送/接收的内容。它将帮助您了解发生了什么,因为HTTP 400错误可能意味着很多事情。我使用IE浏览器访问url,但没有获取xml数据。