2013-07-23 39 views
0

我目前正在嘗試將xml文件發佈到Web服務。通過httpwebrequest發佈附加文件到Web服務

這是我當前的代碼

var tempFileLocation = @"c:\Temp\";    

      XmlDocument xdoc = new XmlDocument(); 
      xdoc.LoadXml(item); 
      xdoc.Save(tempFileLocation + "\\pcf.xml"); 

      var url = "https://Siteaddress/xml.aspx"; 

      UTF8Encoding encoding = new UTF8Encoding(); 
      byte[] byte1 = encoding.GetBytes(xdoc.InnerXml); 
      HttpWebRequest submissionRequest = (HttpWebRequest)WebRequest.Create(url); 
      submissionRequest.KeepAlive = true; 
      submissionRequest.Method = "POST"; 
      submissionRequest.ContentType = "multipart/form-data"; 
      submissionRequest.ContentLength = byte1.Length; 
      submissionRequest.Timeout = 10000; 
      submissionRequest.Headers.Add("Accept-Encoding", "gzip,deflate"); 

      Stream requestStream = submissionRequest.GetRequestStream(); 
      requestStream.Write(byte1, 0, byte1.Length); 
      requestStream.Close(); 

      XmlDocument responseXMLDocument = new XmlDocument(); 

      HttpWebResponse submissionAcknowledgement = (HttpWebResponse)submissionRequest.GetResponse(); 

      if (submissionAcknowledgement.StatusCode == HttpStatusCode.OK) 
      { 
       responseXMLDocument.Load(submissionAcknowledgement.GetResponseStream()); 

      } 

然後我收到以下消息。

壞的Request.Form [pcfxml] - 這應該已經連接的POST

我應該如何發佈XML文件作爲附件?

回答

0

最終我找到了一個解決方案,我需要通過Web客戶端

var url = string.Format("https://Site-Address/xml.aspx"); 

     NameValueCollection nvc = new NameValueCollection(); 
     nvc.Add("pcfxml", productSerialized); 

     WebClient wc = new WebClient(); 
     var response = wc.UploadValues(url, nvc); 

感謝Aundy您的回覆我曾與邊界發揮各地傳遞一個NameValueCollection中。

0

似乎缺少邊界。需要爲所有分段上傳設置邊界...

boundary = GetBoundary(); 

request.ContentType = "multipart/form-data; boundary=" + boundary; 

和邊界應該如下所示。請注意,每當您向請求流中寫入一個字節時,請確保您提到了邊界。

private static string GetBoundary() 
{ 
    return "--------------------" + DateTime.Now.Ticks.ToString("x"); 
}