emacs 有一個令筆者很激賞的功能,我覺得遠超過編輯器的功能。就是按C-x C-f,
當沒有選檔案時,會進入檔案總管,而選擇檔案,可以快速開啟,這種混合檔案總管和編輯器的
使用愈用愈入迷。
另一個就是Esc-x shell切換到shell模式,有人常常會有把一些指令及輸出執行的結果,存起來,對emacs來講,shell 或檔案總管,都可以按你高興,另存成檔案,當下就另存,C-x C-w
這種設計理念,很直覺。
這一個禮拜進度嚴重落後,覺得除了是很熟的工作,任何的開發,總是計畫趕不上變化,
總有額外的挫折。
gsoap2是很有名的soap 的tool kit。然後,開速Get Started.
基本上,它會產生幾個指令工具,幫你產生必要的檔,所謂的toolkit,表示它是超強的程式產生器。
在教程裏,
http://www.cs.fsu.edu/~engelen/soapmain.html#howto
所舉的例子,從WSDL裏產生標頭檔,
無論是
wsdl2h -o XMethodsQuery.h http://www.xmethods.net/wsdl/query.wsdl
還是這個
wsdl2h -c -o quote.h http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl
不知是不是因為年代久遠,都失敗。
無效的網址,不能抓wsdl下來。
還好邦友 antijava有分享web service,
wsdl2h -c -o etrans.h http://e-trans.iot.gov.tw/FIDSWebS/services/FIDSWS?wsdl
是ok的。
可以成功產生etrans.h
然後,按造教學,再下。
$ soapcpp2 -c etrans.h
產生了一堆檔案,
$ls
etrans.h FIDSWSSoapBinding.nsmap soapH.h
FIDSWSSoapBinding.ListArrival.req.xml quote.h soapServer.c
FIDSWSSoapBinding.ListArrival.res.xml soapC.c soapServerLib.c
FIDSWSSoapBinding.ListDeparture.req.xml soapClient.c soapStub.h
FIDSWSSoapBinding.ListDeparture.res.xml soapClientLib.c
照手冊的說法,
#include "soapH.h" // obtain the generated stub
#include "Quote.nsmap" // obtain the generated XML namespace mapping table for the Quote service
main()
{
struct soap *soap = soap_new();
float quote;
if (soap_call_ns1__getQuote(soap, NULL, NULL, "IBM", quote) == SOAP_OK)
printf("Current IBM Stock Quote = %g\n", quote);
else // an error occurred
soap_print_fault(soap, stderr); // display the SOAP fault on the stderr stream
}
以我們的例子,
把Quote.nsmap
有quote字眼的,按成我們的etrans,就可以成一個小小的soap app。
明天繼續深入探討。