C# 通过httpwebrequest将附加文件发布到web服务
我目前正在尝试将xml文件发布到web服务 这是我当前的代码C# 通过httpwebrequest将附加文件发布到web服务,c#,web-services,post,httpwebrequest,C#,Web Services,Post,Httpwebrequest,我目前正在尝试将xml文件发布到web服务 这是我当前的代码 var tempFileLocation = @"c:\Temp\"; XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(item); xdoc.Save(tempFileLocation + "\\pcf.xml"); var url = "https:/
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());
}
然后我收到以下消息
请求不正确。表单[pcfxml]-应将其作为POST附加
如何将xml文件作为附件发布?似乎缺少边界。需要为所有多部分上载设置边界
boundary = GetBoundary();
request.ContentType = "multipart/form-data; boundary=" + boundary;
边界应该如下所示。请注意,无论何时在请求流中写入一个字节,请确保您提到了边界
private static string GetBoundary()
{
return "--------------------" + DateTime.Now.Ticks.ToString("x");
}
最终,我找到了一个通过WebClient传递NameValueCollection所需的解决方案
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);
谢谢阿姨的回复,我和boundary玩过了
private static string GetBoundary()
{
return "--------------------" + DateTime.Now.Ticks.ToString("x");
}