2012-04-18 11 views
-1

私のクライアント側で私のPOSTメソッドから400の悪い要求が出ているのを実際に調べるのが難しいです。私の他のPOSTメソッドは、このサービスとクライアントで正常に動作します。しかし、これは働いていないのですか?新鮮な眼が問題を見つけるかもしれないと思っていたのですか?これはそれかもしれない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

+0

@SLaksちょっと手紙。 –

答えて

4

:マークされた行に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 

クライアントコード:

私のサービスは、このようになります。

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

実際には、開始メッセージ要素は終了要素です。

+2

そして教訓は...手でXMLを構築しないでください。 – SLaks

+0

@SLaks +1、あなたの右の笑、そしてあなたのケネスに感謝! –

関連する問題