2012-04-18 47 views
-1

我有一个真正的困难时间搞清楚为什么我在我的客户端从我的POST方法得到一个400错误的请求。我的其他POST方法对此服务和客户端正常工作。但这一个没有工作?我希望有一双新的眼睛可能会发现这个问题?400错误的请求,但无法找到问题

我的服务是这样的:

[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(); 
    } 
+0

什么是文字? – SLaks 2012-04-18 22:01:56

+0

@SLaks只是几个字母。 – 2012-04-18 22:03:45

回答

4

这可能是它。

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

打开Message元素实际上是一个关闭元素。

+2

而课程是...不要手动构建XML。 – SLaks 2012-04-18 22:40:18

+0

@SLaks +1,你的大声笑,谢谢你的肯尼斯! – 2012-04-19 01:36:09