Xml 来自 URL 的请求和响应

Xml Request and response from a URL

我正在尝试从接受 Xml 输入和 returns Xml 输出的 URL 获得响应。

还有这种情况,当这个 Url returns 错误请求 400 时,在这种情况下,在代码中我会得到一个异常,我无法查看 Xml,但如果我在邮递员中尝试相同的输入,我将得到 Xml 输出。

如果出现异常,我可以使用 WebException 捕获此异常,但最后我使用reader.ReadToEnd() 我会得到一个 JSON 而不是我从邮递员那里得到的 Xml 输出

邮递员输出示例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<RESPONSE MODE="DIRECT" TYPE="PINPRINTING">
    <RESULTMESSAGE>User not allowed to process</RESULTMESSAGE>
</RESPONSE>

这是我的代码:

public void GetResponse()
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myURL);
                request.Accept = "application/xml";

                byte[] requestInFormOfBytes = System.Text.Encoding.ASCII.GetBytes(requestXmlDoc.InnerXml);
                request.Method = "POST";
                request.ContentType = "text/xml;charset=utf-8";
                request.ContentLength = requestInFormOfBytes.Length;
                Stream requestStream = request.GetRequestStream();

                requestStream.Write(requestInFormOfBytes, 0, requestInFormOfBytes.Length);
                requestStream.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader respStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
                string receivedResponse = respStream.ReadToEnd();
            }
            catch (WebException e)
            {
                using (WebResponse response = e.Response)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response;
                    Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
                    using (Stream data = response.GetResponseStream())
                    using (var reader = new StreamReader(data, ASCIIEncoding.ASCII))
                    {
                        string text = reader.ReadToEnd();

                        Console.WriteLine(text);
                    }
                }
            }
        }

返回的JSON是这样的:

{
  "status": 400,
  "statusDesc": "Invalid input"
}

嘿,我发现答案是内容类型。 改变了: request.ContentType = "text/xml;字符集=utf-8"; 对此 request.ContentType = "application/xml"; 现在我得到了我需要的Xml