当前位置:编程学习 > C#/ASP.NET >>

初学,给了个描述文件,怎么创建这个web service?能帮忙写个范例么?


web   service描述     
<?xml   version="1.0"   encoding="utf-8"?> 
<wsdl:definitions   xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"   

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"   xmlns:s="http://www.w3.org/2001/XMLSchema"   

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"   xmlns:tns="http://tempuri.org/"   

xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"   xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"   

targetNamespace="http://tempuri.org/"   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 
    <wsdl:types> 
        <s:schema   elementFormDefault="qualified"   targetNamespace="http://tempuri.org/"> 
            <s:element   name="GetSpServices"> 
                <s:complexType   /> 
            </s:element> 
            <s:element   name="GetSpServicesResponse"> 
                <s:complexType> 
                    <s:sequence> 
                      <s:element   minOccurs="0"   maxOccurs="1"   name="GetSpServicesResult"   

type="tns:ArrayOfServiceInfo"   /> ° 
                    </s:sequence> 
                </s:complexType> 
            </s:element> 
            <s:complexType   name="ArrayOfServiceInfo"> 
                <s:sequence> 
                    <s:element   minOccurs="0"   maxOccurs="unbounded"   name="ServiceInfo"   nillable="true"   

type="tns:ServiceInfo"   /> 
                </s:sequence> 
            </s:complexType> 
            <s:complexType   name="ServiceInfo"> 
                <s:sequence> 
                    <s:element   minOccurs="0"   maxOccurs="1"   name="TitleURL"   type="s:string"   /> 
                    <s:element   minOccurs="0"   maxOccurs="1"   name="TitleName"   type="s:string"   /> 
                    <s:element   minOccurs="0"   maxOccurs="1"   name="TitleDesc"   type="s:string"   /> 
                </s:sequence> 
            </s:complexType> 
        </s:schema> 
    </wsdl:types> 
    <wsdl:message   name="GetSpServicesSoapIn"> 
        <wsdl:part   name="parameters"   element="tns:GetSpServices"   /> 
    </wsdl:message> 
    <wsdl:message   name="GetSpServicesSoapOut"> 
        <wsdl:part   name="parameters"   element="tns:GetSpServicesResponse"   /> 
    </wsdl:message> 
    <wsdl:portType   name="SpServiceSoap"> 
        <wsdl:operation   name="GetSpServices"> 
            <wsdl:input   message="tns:GetSpServicesSoapIn"   /> 
            <wsdl:output   message="tns:GetSpServicesSoapOut"   /> 
        </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding   name="SpServiceSoap"   type="tns:SpServiceSoap"> 
        <soap:binding   transport="http://schemas.xmlsoap.org/soap/http"   style="document"   /> 
        <wsdl:operation   name="GetSpServices"> 
            <soap:operation   soapAction="http://tempuri.org/GetSpServices"   style="document"   /> 
            <wsdl:input> 
                <soap:body   use="literal"   /> 
            </wsdl:input> 
            <wsdl:output> 
                <soap:body   use="literal"   /> 
            </wsdl:output> 
        </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service   name="SpService"> 
        <documentation   xmlns="http://schemas.xmlsoap.org/wsdl/"   /> 
        <wsdl:port   name="SpServiceSoap"   binding="tns:SpServiceSoap"> 
            <soap:address   location="http://localhost:7000/SpService/SpService.asmx"   /> 
        </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

WebService   说明: 

Service的名称统一为SpService 
<wsdl:service   name="SpService">                       //这里是service的名称 
        <documentation   xmlns="http://schemas.xmlsoap.org/wsdl/"   /> 
        <wsdl:port   name="SpServiceSoap"   binding="tns:SpServiceSoap"> 
            <soap:address   location="http://localhost:7000/SpService/SpService.asmx"   /> 
        </wsdl:port> 
</wsdl:service> 
取得内容信息的方法命名为GetSpServices(),无输入参数 
    <wsdl:operation   name="GetSpServices">           //这里是方法的名称 
            <wsdl:input   message="tns:GetSpServicesSoapIn"   /> 
            <wsdl:output   message="tns:GetSpServicesSoapOut"   /> 
        </wsdl:operation> 
返回的数据类型为对象数组,对象的名称统一为ServiceInfo 
    <s:element   name="GetSpServicesResponse"> 
                <s:complexType> 
                    <s:sequence> 
                      <s:element   minOccurs="0"   maxOccurs="1"   name="GetSpServicesResult"   

type="tns:ArrayOfServiceInfo"   /> °     //返回的数据类型 
                    </s:sequence> 
                </s:complexType> 
            </s:element> 
            <s:complexType   name="ArrayOfServiceInfo"> 
                <s:sequence> 
                    <s:element   minOccurs="0"   maxOccurs="unbounded"   name="ServiceInfo"   nillable="true"   

type="tns:ServiceInfo"   />       数组的成员类型为ServiceInfo的对象 
                </s:sequence> 
            </s:complexType> 
代码: 
Public   ServiceInfo[]   GetSpServices() 

ServicesInfo[]   tempServices   =   ……. 
………….. 
Return   tempServices; 

对象   ServiceInfo的描述如下:     
            <s:complexType   name="ServiceInfo"> 
                <s:sequence> 
                    <s:element   minOccurs="0"   maxOccurs="1"   name="TitleURL"   type="s:string"   /> 
                    <s:element   minOccurs="0"   maxOccurs="1"   name="TitleName"   type="s:string"   /> 
                    <s:element   minOccurs="0"   maxOccurs="1"   name="TitleDesc"   type="s:string"   /> 
                </s:sequence> 
            </s:complexType> 
 
 
--------------------编程问答-------------------- using   System; 
using   System.Web; 
using   System.Collections; 
using   System.Web.Services; 
using   System.Web.Services.Protocols; 
using   System.Data; 
using   System.Data.SqlClient;   

///   <summary> 
///   SpService   的摘要说明 
///   </summary> 
[WebService(Namespace   =   "http://123456.com")] 
[WebServiceBinding(ConformsTo   =   WsiProfiles.BasicProfile1_1)] 
public   class   SpService   :   System.Web.Services.WebService 



        public   SpService() 
        { 


                //如果使用设计的组件,请取消注释以下行   
                //InitializeComponent();   
        } 

        [WebMethod] 
        public   DataSet   GetSpServices() 
        { 
                SqlConnection   conn; 
                conn   =   new   SqlConnection(); 
                conn.ConnectionString   =   System.Configuration.ConfigurationSettings.AppSettings

["connString"]; 
                try 
                { 
                        DataSet   ds   =   new   DataSet(); 
                        string   searchString   =   "select   TitleURL,TitleName,TitleDesc   from   webservice"; 

                        SqlDataAdapter   da   =   new   SqlDataAdapter(searchString,   conn); 

                        da.Fill(ds,"GetSpServices"); 
                        return   ds; 

                } 

                catch 
                { 
                        return   null; 
                } 

        } 


这是我的代码   不知道怎么按照描述文件里的规则建立该web   service 
     
 
  这是我上面代码调用返回的文档,大概数据结构就是这样   
<?xml   version="1.0"   encoding="utf-8"   ?>   
-   <DataSet   xmlns="http://123456.com"> 
-   <xs:schema   id="NewDataSet"   xmlns=""   xmlns:xs="http://www.w3.org/2001/XMLSchema"   

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
-   <xs:element   name="NewDataSet"   msdata:IsDataSet="true"   msdata:UseCurrentLocale="true"> 
-   <xs:complexType> 
-   <xs:choice   minOccurs="0"   maxOccurs="unbounded"> 
-   <xs:element   name="GetSpServices"> 
-   <xs:complexType> 
-   <xs:sequence> 
    <xs:element   name="TitleURL"   type="xs:string"   minOccurs="0"   />   
    <xs:element   name="TitleName"   type="xs:string"   minOccurs="0"   />   
    <xs:element   name="TitleDesc"   type="xs:string"   minOccurs="0"   />   
    </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:choice> 
    </xs:complexType> 
    </xs:element> 
    </xs:schema> 
-   <diffgr:diffgram   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"   xmlns:diffgr="urn:schemas-

microsoft-com:xml-diffgram-v1"> 
-   <NewDataSet   xmlns=""> 
-   <GetSpServices   diffgr:id="GetSpServices1"   msdata:rowOrder="0"> 
    <TitleURL> URL1 </TitleURL>   
    <TitleName> 【1】 </TitleName>   
    <TitleDesc> 1 </TitleDesc>   
    </GetSpServices> 
-   <GetSpServices   diffgr:id="GetSpServices2"   msdata:rowOrder="1"> 
    <TitleURL> URL2 </TitleURL>   
    <TitleName> 【2】 </TitleName>   
    <TitleDesc> 2 </TitleDesc>   
    </GetSpServices> 
-   <GetSpServices   diffgr:id="GetSpServices3"   msdata:rowOrder="2"> 
    <TitleURL> URL3 </TitleURL>   
    <TitleName> 【3】 </TitleName>   
    <TitleDesc> 3 </TitleDesc>   
    </GetSpServices> 
    </NewDataSet> 
    </diffgr:diffgram> 
    </DataSet>   --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 可以找些例子看啊


diy520 --------------------编程问答-------------------- 找了,主要是不知道怎么按他的需求写 --------------------编程问答-------------------- 试着在Web Service里写个方法,在另一个类里调用它,
完成了就可以按你的意愿去操作它了 --------------------编程问答-------------------- 楼上说的,我不太明白呢,我初学.net --------------------编程问答-------------------- http://dev.rdxx.com/Java/JavaXML/2005-7/24/021815710.shtml或许有用 --------------------编程问答-------------------- 友情MARK --------------------编程问答-------------------- 到我的资源里下web service例子看看,很简单,如果看懂了,再做就容易了 --------------------编程问答-------------------- LZ,你的问题解决了吗?我也和你遇到了差不多的情况! --------------------编程问答--------------------  LZ可以找些例子把Web Service写好,然后在你本地的IIS上发布出来,别人去访问发布出来的WenService
看看能不能访问到。
 如果能的话,以后就在你写的.Net程式里去添加Web引用,这样你在所写的程式里就可以用这样的WebService撒!
我也不是特别深入了解WebService其中的奥妙,希望能对LZ有所帮助,共同进步。
补充:.NET技术 ,  Web Services
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,