-1

我很难弄清楚为什么我在客户端的 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();
    }
4

1 回答 1

4

这可能是它。

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

开始的 Message 元素实际上是一个结束元素。

于 2012-04-18T22:11:37.863 回答