流和XmlTextWriter的......请求不被正确接收
-
24-09-2019 - |
题
林停留在此HttpWebRequest的问题。我需要发送XML到网站。但我一直在我的请求得到否定的答复。我看到其中的ContentLength设置一些代码示例...这可能是问题,但我不知道......
写在writePaymentRequest(...)的XML是完全一样的网站需要它来的,因为他们得到了我的XML标记,他们成功了,在另一种编程语言,但。结果只包含其错误,而不是信息我应该被接收。
我不能设置CONTENTLENGTH,因为我不知道的长度,当我在它创建与requeststream作家。
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("https://some.website.com");
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
using (writer = new XmlTextWriter(httpWebRequest.GetRequestStream(), System.Text.Encoding.UTF8))
{
writePaymentRequest(writer, registrant, amount, signature, ipaddress);
}
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
String stringResult = streamReader.ReadToEnd();
streamReader.Close();
解决方案
您会知道的长度,如果你写的XmlTextWriter对象到像一个MemoryStream第一。从那里,你可以得到的字节数,设置httpWebRequest.ContentLength的字节数组的长度,然后将字节数组写入您的要求。
修改的
你的代码的中间会是这个样子(我认为):
MemoryStream ms = new MemoryStream();
using (writer = new XmlTextWriter(ms, System.Text.Encoding.UTF8))
{
writePaymentRequest(writer, registrant, amount, signature, ipaddress);
}
byte[] bytes = ms.ToArray();
ms.Close();
httpWebRequest.GetRequestStream().Write(bytes, 0, bytes.Length);
httpWebRequest.ContentLength = bytes.Length;
编辑#2
相反XmlTextWriter(ms, System.Text.Encoding.UTF8)
,尽量XmlTextWriter(ms, new UTF8Encoding(false))
看看是否能解决编码问题
不隶属于 StackOverflow