在我的网络项目中,我使用http请求和响应来访问https付款网站。但是当我调用getresponse()
函数时,它会返回“Precondition failed(412)”错误。
HttpWebRequest paymentRequest = (HttpWebRequest)WebRequest.Create("https://xxxxxx/authorize");
Uri uri = new Uri("https://xxxxxx/authorize");
NetworkCredential netCredential = new NetworkCredential("XXXXXXXXX", "XXXXXXXXX");
paymentRequest.Credentials = netCredential.GetCredential(uri, "Basic");
paymentRequest.PreAuthenticate = true;
byte[] Data = System.Text.Encoding.ASCII.GetBytes(sXMLTemplate);
paymentRequest.Method = "POST";
paymentRequest.Headers.Add("MIME-Version", "1.0");
paymentRequest.Headers.Add("Request-number", "1");
paymentRequest.Headers.Add("Document-type", "Request");
paymentRequest.Headers.Add("Content-transfer-encoding", "application/xml");
paymentRequest.ContentType = "application/xml";
paymentRequest.ContentLength = Data.Length;
paymentRequest.KeepAlive = true;
Stream streamWriter = paymentRequest.GetRequestStream();
streamWriter.Write(Data, 0, Data.Length);
streamWriter.Close();
HttpWebResponse paymentResponse = (HttpWebResponse)paymentRequest.GetResponse();
Stream responseStream = paymentResponse.GetResponseStream();
reader = new XmlTextReader(responseStream);
如何解决此错误?
答案 0 :(得分:0)
请检查您正在POST的XML数据是否成功验证,并且如果强制执行XML架构,则不会缺少XML元素
答案 1 :(得分:0)
查看有效的内容转移编码。
application / something用于Content-Type,而不是编码。
有关详细信息,请查看此处的规范:
http://www.w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html
我的所作所为想想你就是这样:
paymentRequest.Headers.Add("Content-type", "application/xml");
或简单地说:
paymentRequest.ContentType = "application/xml";