2013-03-08 122 views
-2

你好我已創建WCF服務,服務合同,合同的數據被粘貼下面如何使用HTTPWebRequest或Webclient呼叫休息WCF服務?

[ServiceContract] 
public interface IRestWithXML 
{ 
    [OperationContract] 
    [WebInvoke(Method = "Post", UriTemplate = "DoWork", RequestFormat=    WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    string DoWork(Test objtest); 

    [OperationContract] 
    [WebInvoke(Method = "Post", UriTemplate = "Method?test={strtest}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    string Method(Test objtest,string strtest); 

}   

[DataContract] 
public class Test 
{ 
    [DataMember] 
    public string id { get; set; } 
} 

我應該如何在.NET中測試這些服務。我可以通過將方法「Post」更改爲「GET」來測試方法。我不得不使用「Post」來測試這些服務。請指導我

在此先感謝!!!!

回答

0

要測試一個POST請求,你必須改變你的代碼一些事情:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "DoWork", RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
string DoWork(Stream objtest); 

您設置到流的參數。

在DoWork的(流objtest)的實現:

public string DoWork(Stream objtest) 
{ 
    StreamReader sr = new StreamReader(stream); 
    string s = sr.ReadToEnd(); 
    sr.Dispose(); 
    NameValueCollection collection = System.Web.HttpUtility.ParseQueryString(s); 
    return collection.ToString(); 
} 

要測試你要求,你必須使用一個REST客戶端(提琴手?),你的身體的內容將是收藏。

如果你想創建在C#中的要求:

string body ="&key1=value1&key2=value2"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "POST"; 

using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) 
{ 
    writer.Write(body); 
} 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
+0

感謝回覆..我已經嘗試過,但我開了g遠程服務器返回錯誤。方法不允許錯誤 – Parthi 2013-03-08 12:14:44

5