2012-08-01 69 views
0

我試圖與我的休息服務交流,但這一次總是返回我的發表參數是空的,但在我的客戶端控制檯中,他被填充。REST服務收到空參數

這裏是接口類:

[ServiceContract] 
    public interface IMyTest 
    { 
     [OperationContract] 
     [WebInvoke(UriTemplate = "TestMe", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)] 
     string TestMe(string parameter);   
    } 

我的SVC方法:

public string TestMe(string parameter) 
      { 
      if (string.IsNullOrEmpty(parameter) 
       return "Empty"; 
      return "OK"; 
      } 

我的客戶:

string content = "{\"Param\" : \"TEST\"}"; 
var request = WebRequest.Create("http://localhost/MyTestURL/MyTest.svc/TestMe"); 
       request.Method = "POST"; 
       request.ContentType = "application/json"; 
       using (var writer = new StreamWriter(request.GetRequestStream())) 
       { 
        writer.Write(content); 
       } 

       var res = (WebResponse)request.GetResponse(); 

       StreamReader reader = 
        new StreamReader(res.GetResponseStream(), Encoding.UTF8); 
       System.Console.WriteLine("Response"); 
       System.Console.WriteLine(reader.ReadToEnd().ToString()); 

是我的客戶端代碼不好嗎?我的配置不好嗎? ...

謝謝。

+0

你是否也傳遞了內容長度標題? – 2012-08-01 16:38:14

+0

我也測試過,通過content-lentgh但沒有任何改變。 – ahikaz 2012-08-02 09:57:17

回答

0

我創建了一個很好的tutorial,它幫助我用stream參數實現了方法。謝謝。

0

如果你想獲得的請求字符串,使用流而不是字符串參數

public void TestMe(Stream dataStream) 

但如果沒有,使用序列化到JSON對象作爲參數。

+0

我測試將字符串更改爲流,但現在我有響應400錯誤的請求。 – ahikaz 2012-08-02 09:38:20