python調用hessian

來源:互聯網
上載者:User

會查到這篇文章的,相信也不需要我介紹hessian了,只是其於python的實現,在官網上太草率了,甚至沒有格式化好,以至於下下來的hessianlib.py根本無法用,好吧,我咬牙格式化好,讓代碼能跑起來,一切好像正常了,可是我需要的是測試通過hessian傳遞對象參數,以及傳遞byte[],這有點棘手了。

發現官網上說了那麼一句話,關於hessian的python實現,已經轉交給mustaine項目來處理,並且給出了google code地址:http://code.google.com/p/mustaine/

我把項目clone下來,可是居然沒跑起來,於是從項目首頁https://github.com/bgilmore/mustaine裡面又下載了一份,安裝,測試通過

    url="http://example.com/hession4.0server/remote/helloSpring"    proxy=HessianProxy(url)    proxy.setName("zhangsan")#設定屬性    print proxy.sayHello()#調用方法

接下來是測試如何傳遞類對象和位元組數組,一番折騰後,結果如下:

類對象一直沒測試通過,會在序列化的時候報錯,希望有高手能講解序列化類別對象然後通過hessian傳遞的方法,這條路走不通的情況下,聯絡到上篇文章python使用SUDS調用webservice,中我曾經使用了字典傳遞類對象,於是一測試,居然通過!

addr={"tel":u"電話","fax":"02788889999","code":"ccc","street":"ddd"}proxy.setAddress(addr)print proxy.getAddress().fax

好了,不糾結這個了,位元組數組我測了無窮多方法,都沒通過(沒文檔害人啊!!!),最後在源碼的protocol模組裡面找到了一個Binary類,居然通過它就把java端需要的byte[]傳遞過去了

然後是一個小問題,得到的對象是一個Binary對象,並不具有可讀性,簡單,取該對象的屬性value值即可

user={"name":"walker","password":"ppp","address":[addr],"blob":protocol.Binary("中華人民共和國")}proxy.setUser(user)print proxy.getUser().blob.value

需要小注意一下的是address屬性,不能直接把addr傳進去,而是要包到list裡面,同樣,取值的時候就要用索引器把它取出來了

順便示範一下,把一個檔案test.jpg通過hessian上傳到伺服器,再下載回來

    url="http://example.com/hession4.0server/remote/helloSpring"    proxy=HessianProxy(url)    st=StringIO.StringIO()    base64.encode(open("test.jpg","rb"), st)    user={"name":"walker","password":"ppp","address":[addr],"blob":protocol.Binary(st.getvalue())}    proxy.setUser(user)    img=proxy.getUser().blob.value    base64.decode(StringIO.StringIO(img), open("myjpg.jpg","wb"))    print "done"
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.