勁爆經典大帝國I(AWESOME CLASSIC MIX VOL.1)

2010/01/13

Web Service回傳null !??

最近工作上要呼叫其他系統的Web Service
不過該廠商只有提供WSDL檔案,所以只好用微軟的WSDL.exe去把該廠商提供的WSDL產出成程式碼,在這Web Service主要可以取得訂單總數及訂單內容,由WSDL.exe產出的類別,很順利的取得訂單總數,不過訂單內容怎麼取都是null。

依WSDL內容,該服務會回傳一個訂單陣列,不過怎麼試都是null...
最後用soapUI去查看對方的Web Service有沒有問題,結果soapUI測試ok,那就不會是網路的問題了~可是資料到底跑哪去了!?再動用Packetyzer去看封包,結果確定資料都有進程式裡...

google很久,在asp.net討論區找到一樣的問題,本來WSDL.exe產出的程式碼如下

    [System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace = "http://xxx.xxx.xxx", ResponseNamespace = "http://xxx.xxx.xxx")]
    [return: System.Xml.Serialization.SoapElementAttribute("getOrderByDtReturn")]
    public Orders getOrderByDt(System.DateTime dt)
    {
        object[] results = this.Invoke("getOrderByDt", new object[] {
                    dt});
        return (Orders)results[0];
    }

討論區有人提供的解決方法是直接回傳object...好吧,也只好先這樣了@@~
將程式改為...

    [System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace = "http://xxx.xxx.xxx", ResponseNamespace = "http://xxx.xxx.xxx")]
    [return: System.Xml.Serialization.SoapElementAttribute("getOrderByDtReturn")]
    public object getOrderByDt(System.DateTime dt)
    {
        object[] results = this.Invoke("getOrderByDt", new object[] {
                    dt});
        return results[0];
    }

接回object後再轉型為XmlNode[]來解...

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...