现在的位置: 首页 > 综合 > 正文

SoapHttpClientProtocol,调用制定服务的指定方法

2012年07月22日 ⁄ 综合 ⁄ 共 1405字 ⁄ 字号 评论关闭

一、SoapHttpClientProtocol类可以直接访问指定的webService的指定方法。

先决条件:

  1. 必须给该类的Url熟悉赋值,该Url表示服务的具体路径。
  2. 具体的类必须继承该类。
  3. 必须在继承类上添加这些特性:尤其是 WebServiceBinding(Name = "Soap", Namespace = "http://tempuri.org/")]
  4.  完整的特性有:  [GeneratedCode("System.Web.Services", "2.0.50727.3053"),
       DesignerCategory("code"), DebuggerStepThrough,
        WebServiceBinding(Name = "Soap", Namespace = "http://tempuri.org/")]
  5. 调用方式如下:

以字符串为参数

public string Request(string requestXML)
{

object[] array = base.Invoke("Request", new object[]
{
requestXML
});
return (string)array[0];
}

以实体传递参数

        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/Request", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public JobMsgEntity Request(Entity jme)
        {
            object[] results = this.Invoke("Request", new object[] {
                    jme});
            return ((Entity)(results[0]));
        }

说明:

Request:表示需要调用的方法。

requestXML:表示传入的参数,该参数是序列化后的xml参数。

类似如下格式:

<?xml version="1.0"?>

<Request>

<Header UserID="120201" RequestType="Flight.Order.FlightMessage.SendMessage" AsyncRequest="false" Timeout="0" MessagePriority="3" />

<SendMessageRequest>

<OrderID>511017689</OrderID>

<Message>通知内容</Message>

<Type>出票</Type>

<Priority>10</Priority>

<Sender>System</Sender>

<Recipients>CP</Recipients>

<SendCode />

</SendMessageRequest>

</Request>

 

抱歉!评论已关闭.