前提条件HTTP请求失败错误

时间:2015-07-21 10:20:03

标签: c#

在我的网络项目中,我使用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);

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

请检查您正在POST的XML数据是否成功验证,并且如果强制执行XML架构,则不会缺少XML元素

答案 1 :(得分:0)

查看有效的内容转移编码。

  • BASE64
  • 8BIT
  • 7BIT
  • BINARY
  • 引用打印

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";