2

我坚持这个 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();
4

1 回答 1

4

如果您先将 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))查看是否可以解决编码问题

于 2010-02-01T14:16:55.783 回答