您好我已经创建了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 :(得分:5)
您使用WCF和WebInvoke
属性的事实并不意味着您可以搜索更通用的术语。
您只是在寻找“测试POST到REST服务”的方法,如果您在自己喜欢的网络搜索引擎中输入,可能会出现以下命中:
这些搜索结果将引导您进行以下操作:
答案 1 :(得分:0)
只需将方法设置为" POST"。 http://msdn.microsoft.com/en-US/library/system.net.httpwebrequest.method.aspx
var myWebRequest = new HTTPWebRequest();
myWebRequest.Method = "POST"
答案 2 :(得分:0)
要测试POST请求,您必须更改代码中的一些内容:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "DoWork", RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string DoWork(Stream objtest);
您将参数设置为Stream。
在DoWork(Stream 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客户端(Fiddler?),并且您的正文内容将在该集合中。
如果要在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();