2012-04-18 4 views
-1

내 클라이언트 측의 POST 메서드에서 400 요청이 잘못 표시되는 이유를 알아 내는데 어려움을 겪고 있습니다. 내 다른 POST 메서드는이 서비스와 클라이언트에서 제대로 작동합니다. 아직이 사람은 일하지 않니? 나는 신선한 쌍둥이가 문제를 찾길 바랬는데?400 요청이 잘못되었지만 문제를 찾을 수 없습니다.

내 서비스는 다음과 같습니다 표시 줄에 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 

클라이언트 코드 :

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

이 그것을 수 있습니다.

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

메시지 요소는 실제로 닫는 요소입니다.

+2

그리고 수업은 손으로 XML을 작성하지 마십시오. – SLaks

+0

@ Slaks +1, 너의 오른쪽 롤, 그리고 케네스 감사합니다! –