質問

私はこのhttpwebrequestの問題に固執しています。 XMLをWebサイトに送信する必要があります。しかし、私は自分の要求に否定的な応答を受け続けています。 ContentLengthが設定されているコードの例をいくつか見ました...それが問題かもしれませんが、私は知りません。

WritePaymentRequest(...)で書かれたXMLは、Webサイトが必要とする通りです。結果には、受信しているはずの情報の代わりにエラーのみが含まれています。

RequestStreamを使用して作家を作成したときに長さがわからないため、ContentLengthを設定することはできません。

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)) それがエンコードの問題を修正するかどうかを確認します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top