【问题标题】:How to Call Rest WCF service using HTTPWebRequest or Webclient?如何使用 HTTPWebRequest 或 Webclient 调用 Rest WCF 服务?
【发布时间】:2013-03-08 11:09:44
【问题描述】:

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

提前谢谢!!!!

【问题讨论】:

    标签: c# wcf rest httpwebrequest webclient


    【解决方案1】:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢 Grumbler .. 让我试试 :)
      【解决方案3】:

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

      【讨论】:

      • 感谢您的回复..我已经尝试过,但我收到远程服务器返回错误。方法不允许错误
      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 2020-02-08
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多