2016-06-27 12 views
1

xmlファイルをクライアントからapiに渡す際に問題があります。私はHttpClientを使って接続します。 マイコード:C#でHttpClientを使用してxmlを送信する

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

私は不正な要求に400

+0

ファイトラーのようなツールを使用して、クライアントから送信されたものと受信されたものを確認できます。これは、HTTP 400エラーが多くのことを意味する可能性があるため、何が起こっているのかを把握するのに役立ちます。 – Vincent

+0

私はIEブラウザを使ってhttps://test-e-dokumenty.mf.gov.plというURLに行き、xmlデータを取得しませんでした。 – jdweng

答えて

0

を受け付けておりますが、あなたは、私が変更した以下のコードを試してみてくださいことはできますか?

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