2016-11-12 8 views
2

같은 질문에 대한 여러 가지 대답이 있지만 광산을 해결할 수없는 것을 알고 있습니다. 여러분 중 누구라도 제 코드를 살펴보고 문제를 해결할 수 있습니까? 나는 다음과 같이 POST 방법WCF 게시 방법, 400 잘못된 요청 반환

을은 WCF 서비스를 만든

인터페이스 (iComplaints.cs)

[OperationContract] 
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare,  ResponseFormat = WebMessageFormat.Json, UriTemplate = "/insertcomplaint")] 
Stream InsertComplaint(ComplaintData data); 

클래스 (Complaints.cs)

public Stream InsertComplaint(ComplaintData data) 
{ 
    //the code 
} 

를 DataContract 클래스 (ComplaintData)

public class ComplaintData 
{ 
    [DataMember] 
    public string ComplaintID { get; set; } 
    [DataMember] 
    public string EntryBy { get; set; } 
} 

나는 service loc 동맹과 내가 아래 클라이언트 방법은 나에게 400 (잘못된 요청)를 제공 년대 WCF 서비스

<service behaviorConfiguration="ServiceBehavior" name="Complaints"> 
    <endpoint address="" behaviorConfiguration="webHttp" binding="webHttpBinding" contract="IComplaints" /> 
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
    </service> 

하십시오 누구의 도움

void PostComplaint() 
    { 
     HttpWebRequest req = null; 
     HttpWebResponse res = null; 
      string url = "http://localhost:28522/Complaints.svc/insertcomplaint"; 

      ComplaintData iData = new ComplaintData(); 
      iData.ComplaintID = txtComplaintID.Text; 
      iData.EntryBy = txtEntryBy.Text; 

      req = (HttpWebRequest)WebRequest.Create(url); 
      req.Method = "POST"; 
      req.ContentType = "application/json"; 
      req.Headers.Add("SOAPAction", url); 

      using (var streamWriter = new StreamWriter(req.GetRequestStream())) 
      { 
       streamWriter.Write(iData); 
      } 

      res = (HttpWebResponse)req.GetResponse(); 
      using (var streamReader = new StreamReader(res.GetResponseStream())) 
      { 
       var result = streamReader.ReadToEnd(); 
       TextBox1.Text = result; 
      } 
    } 

웹 구성을 사용하여 소비 할 때.

+0

@Sajeetharan가 : 심각 아니 ... 나는 당신이 감지 할 수 있다면 어딘가 잘못하고 있어요 알고있다. –

답변

1

나는 당신의 serialization에 문제가 있다고 생각합니다. 이를 확인하시기 바랍니다 :

 void PostComplaint() 
    { 
     HttpWebRequest req = null; 
     HttpWebResponse res = null; 
     string url = "http://localhost:28522/Complaints.svc/insertcomplaint"; 

     ComplaintData iData = new ComplaintData(); 
     iData.ComplaintID = txtComplaintID.Text; 
     iData.EntryBy = txtEntryBy.Text; 

     req = (HttpWebRequest)WebRequest.Create(url); 
     req.Method = "POST"; 
     req.ContentType = "application/json"; 
     req.Headers.Add("SOAPAction", url); 

     using (var streamWriter = new StreamWriter(req.GetRequestStream())) 
     { 
      streamWriter.Write(Newtonsoft.Json.JsonConvert.SerializeObject(iData)); 
     } 

     res = (HttpWebResponse)req.GetResponse(); 
     using (var streamReader = new StreamReader(res.GetResponseStream())) 
     { 
      var result = streamReader.ReadToEnd(); 
      TextBox1.Text = result; 
     } 

    }