如何在没有WebRequest的情况下使用WCF服务?

时间:2010-11-08 17:56:41

标签: wcf web-services soap

我正在尝试与Web服务进行交互。我发布SOAP Evelolpe并返回SOAP响应。

我可以使用Web请求和响应发布到服务并获取响应。但我想使用WCF执行此操作。有些人可以帮助我实现这个目标。

我的HTTP帖子:

public string HttpPost (string uri, string parameters)
{ 
   WebRequest webRequest = WebRequest.Create (uri);
   webRequest.ContentType = "application/soap+xml;  charset=utf-8";
   webRequest.Method = "POST";
   byte[] bytes = Encoding.ASCII.GetBytes (parameters);
   Stream os = null;
   try
   { // send the Post
      webRequest.ContentLength = bytes.Length;   
      os = webRequest.GetRequestStream();
      os.Write (bytes, 0, bytes.Length);         //Send it
   }

   try
   { // get the response
      WebResponse webResponse = webRequest.GetResponse();
      if (webResponse == null) 
         { return null; }
      StreamReader sr = new StreamReader (webResponse.GetResponseStream());
      return sr.ReadToEnd ().Trim ();
   }
    return null;
}

1 个答案:

答案 0 :(得分:3)

基本上,你需要的是:

  • 您可以从中获取WSDL的URL(通常为(url of your service)?wsdl
  • 或从服务提供商处获取WSDL(以及任何支持的XSD)文件,例如作为ZIP或下载

下一步:从Visual Studio中创建项目,然后右键单击解决方案资源管理器中的References,然后从上下文菜单中选择Add Service Reference

Add Service Reference Context Menu Item

在对话框中键入URL(带?wsdl),或键入存储WSDL / XSD文件的磁盘路径。

Add Service Reference Dialog Box

这将向您的项目添加该服务的WCF服务引用。您现在应该在Service Reference下面有一个条目 - 在您看到的内部,有几个隐藏文件,其中包含现在调用该服务所需的所有生成代码。

基本上,其中一个文件应该被称为(name of your service)Client - 它位于您添加服务引用时定义的名称空间中(默认为ServiceReference1)。使用该命名空间,您现在应该能够创建该WCF客户端:

using ServiceReference1;  // or whatever you called this namespace

public void CallService()
{
   YourServiceNameClient client = new YourServiceNameClient();

   client.YouShouldSeeServiceMethodsHere();
}

使用此WCF客户端,您应该能够轻松地调用服务方法,并将参数(字符串等)传递给这些方法,并且还可能从该服务获取响应(作为字符串或类)方法