在使用WebService时使用DefaultWsdlHelpGenerator.aspx生成的测试页面是,可以获取不同传递方式调用的参数,如下图中的HttpPost
WebService1 ws = new WebService();
ws.Url = "你的地址";
ws.ProtocolVersion = HttpVersion.Version11;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(ws.Url);
req.Method = "POST";
req.ContentType = "application/soap+xml; charset=utf-8";
req.ProtocolVersion = ws.ProtocolVersion;
你是想在DefaultWsdlHelpGenerator.aspx生成的测试页面中自定义post请求使用的URL,为不同的投递方式调用相应的action吗。
如果是这样,你需要修改测试页生成的 HTML 表单的表单操作 URL。 表单操作 URL 确定当用户单击提交按钮时浏览器将表单数据提交到的 URL。
当使用C#调用 WebService 时,可以使用 HttpPost 方法来发送 HTTP POST 请求。要设置 HttpPost 的地址,需要使用 EndpointAddress 类的构造函数将 WebService 的 URL 作为参数传递。
以下是一个示例代码片段,展示如何设置 HttpPost 的地址:
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
class Program
{
static void Main(string[] args)
{
// WebService 的 URL
string url = "http://example.com/MyService.asmx";
// 创建 EndpointAddress 对象
EndpointAddress endpoint = new EndpointAddress(url);
// 创建 Binding 对象
BasicHttpBinding binding = new BasicHttpBinding();
// 创建 ChannelFactory 对象
ChannelFactory<MyServiceSoap> factory = new ChannelFactory<MyServiceSoap>(binding, endpoint);
// 创建 WebService 客户端代理
MyServiceSoap client = factory.CreateChannel();
// 调用 WebService 方法
string result = client.MyMethod();
// 输出结果
Console.WriteLine(result);
}
}
在上面的示例中,url 变量存储 WebService 的 URL。然后,使用 EndpointAddress 构造函数创建 endpoint 对象,将 url 作为参数传递。
接下来,创建一个 BasicHttpBinding 对象和一个 ChannelFactory 对象。然后,使用 CreateChannel 方法创建一个 WebService 客户端代理对象。
最后,调用 WebService 方法并输出结果。
需要注意的是,MyServiceSoap 类是根据 WebService 的名称自动生成的。在本例中,WebService 的名称为 MyService,因此生成的客户端代理类名为 MyServiceSoap。如果 WebService 的名称不同,则生成的类名也会不同。