如何在没有WebRequest的情况下使用WCF服务?
我正在尝试与web服务接口。我正在发布一个SOAP Evelolpe,它返回一个SOAP响应 我可以使用Web请求和响应发布到服务并获得响应,但我想使用WCF。有人能帮我做到这一点吗 我的HTTP帖子:如何在没有WebRequest的情况下使用WCF服务?,wcf,web-services,soap,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 = "applicati
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;
}
基本上,您需要的是:
- 您可以从中获取WSDL的URL(通常为:
)(您服务的URL)?WSDL
- 或者从服务提供商处获取WSDL(以及任何支持XSD的)文件,例如作为ZIP或下载
引用
,然后从关联菜单中选择添加服务引用
在对话框中键入URL(使用?wsdl
),或键入存储wsdl/XSD文件的磁盘路径
这将向项目中添加对该服务的WCF服务引用。您现在应该在服务参考
下有一个条目-在您看到的下面有两个隐藏文件,其中包含调用该服务所需的所有生成代码
基本上,其中一个文件应该称为(服务名称)Client
——它位于添加服务引用时定义的名称空间中(默认为servicerence1
)。使用该名称空间,您现在应该能够创建该WCF客户端:
using ServiceReference1; // or whatever you called this namespace
public void CallService()
{
YourServiceNameClient client = new YourServiceNameClient();
client.YouShouldSeeServiceMethodsHere();
}
使用此WCF客户端,您应该能够轻松调用服务方法,并将参数(字符串等)传递给这些方法,还可能从该服务方法返回响应(作为字符串或类)。基本上,您需要的是:
- 您可以从中获取WSDL的URL(通常为:
)(您服务的URL)?WSDL
- 或者从服务提供商处获取WSDL(以及任何支持XSD的)文件,例如作为ZIP或下载
引用
,然后从关联菜单中选择添加服务引用
在对话框中键入URL(使用?wsdl
),或键入存储wsdl/XSD文件的磁盘路径
这将向项目中添加对该服务的WCF服务引用。您现在应该在服务参考
下有一个条目-在您看到的下面有两个隐藏文件,其中包含调用该服务所需的所有生成代码
基本上,其中一个文件应该称为(服务名称)Client
——它位于添加服务引用时定义的名称空间中(默认为servicerence1
)。使用该名称空间,您现在应该能够创建该WCF客户端:
using ServiceReference1; // or whatever you called this namespace
public void CallService()
{
YourServiceNameClient client = new YourServiceNameClient();
client.YouShouldSeeServiceMethodsHere();
}
使用此WCF客户端,您应该能够轻松调用服务方法,并将参数(字符串等)传递给这些方法,还可能从该服务方法返回响应(作为字符串或类)。另外,请参阅,请参阅,我希望有时间找到最老的问题,这是一个重复的问题。我想把它添加到TagWiki。我希望我有时间找到最古老的问题,这是一个重复的问题。我会把它添加到标签维基。