2012-04-18 64 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