400错误请求,但找不到问题

本文关键字:找不到 问题 错误 请求 | 更新日期: 2023-09-27 18:31:39

我很难弄清楚为什么我在客户端的 POST 方法收到 400 个错误请求。我的其他 POST 方法适用于此服务和客户端。然而这个不起作用?我希望一双新鲜的眼睛能找到问题所在?

我的服务如下所示:

    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/Message")]
    void AddMessage(Message message);
    //Post Method for Message
    [DataContract(Name = "Message")]
    public class Message
    {
    [DataMember(Name = "MessageID")]
    public string MessageID { get; set; }
    [DataMember(Name = "GroupMessage")]
    public string GroupMessage { get; set; }
    //DataContracts for Message

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
    public class RawDataService : IReceiveData
    {
    List<Message> messages = new List<Message>();
    int eCount = 0;
    public void AddMessage(Message message)
    {
        message.MessageID = (++eCount).ToString();
        messages.Add(message);
    }
    // add message method, increment MessageID

要发布的客户端代码,在标记的行上给出 400 个错误请求:

    private void button15_Click(object sender, EventArgs e)
    {
        string uriMessage = "http://localhost:8000/Service/Message";
        StringBuilder sb1 = new StringBuilder();
        sb1.AppendLine("</Message>");
        sb1.AppendLine("<GroupMessage>" + this.textBox22.Text + "</GroupMessage>");
        sb1.AppendLine("</Message>");
        string GroupMessage = sb1.ToString();
        byte[] arr1 = Encoding.UTF8.GetBytes(GroupMessage);
        HttpWebRequest req1 = (HttpWebRequest)WebRequest.Create(uriMessage);
        req1.Method = "POST";
        req1.ContentType = "application/xml";
        req1.ContentLength = arr1.Length;
        Stream reqStrm1 = req1.GetRequestStream();
        reqStrm1.Write(arr1, 0, arr1.Length);
        reqStrm1.Close();
        HttpWebResponse resp1 = (HttpWebResponse)req1.GetResponse(); //400 bad request?
        MessageBox.Show(resp1.StatusDescription);
        reqStrm1.Close();
        resp1.Close();
    }

400错误请求,但找不到问题

可能就是这样。

sb1.AppendLine("</Message>");
sb1.AppendLine("<GroupMessage>" + this.textBox22.Text + "</GroupMessage>");
sb1.AppendLine("</Message>");

开始消息元素实际上是一个结束元素。