如何使用HTTPWebRequest或Webclient调用Rest WCF服务

本文关键字:Rest WCF 服务 调用 Webclient 何使用 HTTPWebRequest | 更新日期: 2023-09-27 18:03:10

你好,我已经创建了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"来测试这些服务。请指引我

thanks in advance !!!!

如何使用HTTPWebRequest或Webclient调用Rest WCF服务

使用WCF和WebInvoke属性并不意味着您可以搜索更通用的术语。

你只是在寻找一种"测试POST到REST服务"的方法,如果你在你最喜欢的网络搜索引擎中输入它,可能会出现以下结果:

  • 如何使用WCF WebInvoke方法:官方微软ASP。网论坛
  • 测试REST web服务
  • 是否有REST服务测试客户端/应用程序?
  • 你用什么工具来测试你的公共REST API?
  • 测试RESTful服务的最佳工具/框架
  • 完整的RESTful API调试/测试工具。
  • 测试客户端测试WCF Rest服务或只是使用浏览器?

这些搜索结果将引导您进入以下内容:

  • rest-client - Java应用程序测试HTTP/RESTful web服务。- Google Project Hosting
  • Google Chrome扩展:REST Console Launcher
  • 旋度
  • HTTP4e,用于Eclipse的REST HTTP客户端插件。
  • https://apigee.com/console/others
  • Firefox插件:Poster
  • 使用jQuery AJAX调用使用WCF REST服务- CodeProject
  • 提琴手
  • SoapUI: Getting Started with REST Testing | REST Testing
  • rest-client - Java应用程序测试HTTP/RESTful web服务。- Google Project Hosting
  • Apache JMeter - Apache JMeter™

只需将方法设置为"POST"。http://msdn.microsoft.com/en-US/library/system.net.httpwebrequest.method.aspx

var myWebRequest = new HTTPWebRequest();
myWebRequest.Method = "POST"

要测试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();