C#使用WebService时如何设置HttpPost的地址

在使用WebService时使用DefaultWsdlHelpGenerator.aspx生成的测试页面是,可以获取不同传递方式调用的参数,如下图中的HttpPost

img


那么能否自定义post所使用的url呢,即调用按钮调整对应的action,如果可以,那么应该在哪里调整呢

img

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 的名称不同,则生成的类名也会不同。