<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一路拾遺
    Collect By Finding All The Way ......
    posts - 81,comments - 41,trackbacks - 0
    今天發現自己陷入了一個誤區。前面做的調用OWL-S服務時是使用描述文件鏈接進行調用的,所以對于遠程的WSDL文件也一直用描述文件鏈接調用,今天和師兄討論了一下,恍然大悟!WSDL和OWL-S不同,它調用時要使用 targetNamespace 來作為 TargetEndpointAddress 。而WSDL文件中其他的內容的作用是為了說明該服務有哪些接口、那些參數,以便調用的時候能夠正確的進行參數的設置。OWL-S在調用的時候能夠自動地獲取操作的名稱和參數類型,無需調用時指定;而WSDL文件則需要在調用之前指定操作和參數的信息(怪不得網上的調用的例子在調用之前都要首先對WSDL進行解析),否則會發生調用錯誤。也許這就是由于WSDL文件中可以包含多個操作,而OWL-S文件中只有一個操作的原因。下面同樣是對 DictionaryService 進行調用的實例:
    一、DictionaryService.wsdl 文件內容
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://www.mindswap.org/axis/services/DictionaryService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://www.mindswap.org/axis/services/DictionaryService" xmlns:intf="http://www.mindswap.org/axis/services/DictionaryService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <!--WSDL created by Apache Axis version: 1.2.1
    Built on Jun 14, 2005 (09:15:57 EDT)
    -->

       
    <wsdl:message name="getMeaningRequest">

          
    <wsdl:part name="in0" type="xsd:string"/>

       
    </wsdl:message>

       
    <wsdl:message name="getMeaningResponse">

          
    <wsdl:part name="getMeaningReturn" type="xsd:string"/>

       
    </wsdl:message>

       
    <wsdl:portType name="DictionaryService">

          
    <wsdl:operation name="getMeaning" parameterOrder="in0">

             
    <wsdl:input message="impl:getMeaningRequest" name="getMeaningRequest"/>

             
    <wsdl:output message="impl:getMeaningResponse" name="getMeaningResponse"/>

          
    </wsdl:operation>

       
    </wsdl:portType>

       
    <wsdl:binding name="DictionaryServiceSoapBinding" type="impl:DictionaryService">

          
    <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

          
    <wsdl:operation name="getMeaning">

             
    <wsdlsoap:operation soapAction=""/>

             
    <wsdl:input name="getMeaningRequest">

                
    <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://services.mindswap.org" use="encoded"/>

             
    </wsdl:input>

             
    <wsdl:output name="getMeaningResponse">

                
    <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.mindswap.org/axis/services/DictionaryService" use="encoded"/>

             
    </wsdl:output>

          
    </wsdl:operation>

       
    </wsdl:binding>

       
    <wsdl:service name="DictionaryServiceService">

          
    <wsdl:port binding="impl:DictionaryServiceSoapBinding" name="DictionaryService">

             
    <wsdlsoap:address location="http://www.mindswap.org/axis/services/DictionaryService"/>

          
    </wsdl:port>

       
    </wsdl:service>

    </wsdl:definitions>

    二、調用過程代碼
    package wsdl;

    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;

    public class CallService {

        
    public static void main(String[] args) {

            
    try {
                           
                String endpoint 
    = "http://www.mindswap.org/axis/services/DictionaryService";
                
    //調用過程
                Service service = new Service();
                
                Call call 
    = (Call) service.createCall();
                
                call.setTargetEndpointAddress(
    new  java.net.URL(endpoint));
                
                call.setOperationName(
    "getMeaning");//WSDL里面描述的操作名稱
                
                call.addParameter(
    "getMeaningRequest", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//操作的參數
                
                call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
    //設置返回類型  
                
                call.setUseSOAPAction( 
    true );
                
                
    //給方法傳遞參數,并且調用方法
                String temp = "good";
                Object[] obj 
    = new Object[]{temp};
                String result 
    = (String)call.invoke(obj);
                
                System.out.println(
    "Result is : "+result);
                }
     catch (Exception e) {
                    e.printStackTrace();
                }

        }

    }


    posted on 2008-08-05 11:40 胖胖泡泡 閱讀(6044) 評論(5)  編輯  收藏

    FeedBack:
    # re: 使用AXIS調用WSDL描述的Web服務(續)
    2008-11-20 13:26 | yes1000y
    看了你兩篇文章,發現你在解決這個問題的時候,在調用WebService服務時傳的endpoint不一樣,是否是endpoint= "http://www.mindswap.org/axis/services/DictionaryService?wsdl";后面多了個(?wsdl)才會出現這個異常?是否把(?wsdl)去掉就可以調用接口提供的方法?
      回復  更多評論
      
    # re: 使用AXIS調用WSDL描述的Web服務(續)
    2008-12-04 10:33 | 胖胖泡泡
    @yes1000y
    不是的,調用wsdl文件的關鍵就在于Endpoint值的設置,應該為WSDL文件中的Targetnamespace值;而非WSDL文件本身的URL。  回復  更多評論
      
    # re: 使用AXIS調用WSDL描述的Web服務(續)
    2009-05-26 11:45 | wzg668
    果然是后面多了一個(?wsdl)
    害得我在google上翻來覆去。
    真是大海撈針啊終于找到了。
      回復  更多評論
      
    # re: 使用AXIS調用WSDL描述的Web服務(續)
    2010-04-01 15:17 | sjx
    @yes1000y
    WSDL文檔分為兩種,一種是服務接口文檔,一種是服務實現文檔,服務接口文檔有個targetNamespace屬性是用來對WSDL文檔進行定位的(這種定位不同于url定位),這樣服務實現文檔就可以通過targetNamespace來引用一個或多個服務接口文檔了  回復  更多評論
      
    # re: 使用AXIS調用WSDL描述的Web服務(續)[未登錄]
    2010-07-13 14:38 | test
    還是不行 老大!
      回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲日本一线产区和二线 | 一日本道a高清免费播放| 免费福利视频导航| 亚洲黑人嫩小videos| 久久综合国产乱子伦精品免费| 亚洲AV无码码潮喷在线观看| 在线看片免费人成视频久网下载| 在线精品亚洲一区二区三区| 中文字幕乱理片免费完整的| 国产∨亚洲V天堂无码久久久| 国产一区二区三区免费| 亚洲av福利无码无一区二区| 无码人妻AV免费一区二区三区 | 日韩电影免费在线| 无遮挡呻吟娇喘视频免费播放| 亚洲综合精品网站| 91免费福利视频| 亚洲精品视频在线观看免费| 久草视频免费在线| 亚洲第一综合天堂另类专| 四虎永久在线免费观看| sihu国产精品永久免费| 亚洲AV日韩精品久久久久久| xx视频在线永久免费观看| 亚洲色在线无码国产精品不卡| 免费不卡中文字幕在线| 免费看搞黄视频网站| 亚洲欧洲日本天天堂在线观看| 日韩免费观看一级毛片看看| 国产精品成人69XXX免费视频| 亚洲AV无码一区二区三区系列| 亚洲AV本道一区二区三区四区| 91免费在线播放| 黄床大片30分钟免费看| 国产亚洲无线码一区二区| 国产精彩免费视频| 人妻18毛片a级毛片免费看| 亚洲成AV人片一区二区| 女人张开腿给人桶免费视频| 黄桃AV无码免费一区二区三区| 亚洲人成影院在线高清|