2016-11-12 87 views
2

我看到有同一個問題有很多答案,但我無法解決我的問題,請你們中的任何一位請通過我的代碼並解決我的問題。 我已創建WCF服務如下 POST方法WCF Post方法,返回400錯誤請求

接口(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; } 
} 

我已經託管了服務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; 
      } 
    } 

Web配置來使用它。

+0

@Sajeetharan:認真沒...我知道我在做,如果你能發現什麼地方錯了。 –

回答

1

我想你的序列化有些問題。 請檢查了這一點:

 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; 
     } 

    } 
相關問題