2016-06-27 17 views
1

Ich habe ein Problem mit der Übergabe von XML-Datei vom Client zu API. Ich verwende HttpClient, um eine Verbindung herzustellen. Mein Code:Post Xml mit HttpClient in C#

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 Bad Request empfange 400.

+0

Sie können ein Tool wie Fiddler verwenden, um zu sehen, was vom Client gesendet/empfangen wird. Es wird Ihnen helfen, herauszufinden, was passiert, weil ein HTTP 400-Fehler eine Menge Dinge bedeuten kann. – Vincent

+0

Ich ging auf die URL https://test-e-dokumentement.mf.gov.pl mit einem IE-Browser und erhielt keine XML-Daten. – jdweng

Antwort

0

Können Sie bitte den Code unten versuchen, ich geändert haben?

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