2017-02-06 9 views
0

私はWebサービスをLibre Officeマクロから呼び出しています。私は、ウェブサーバへのCalcのデータを渡すためにそれを使用しますが、マクロにもかかわらず、コマンドは一度だけ呼び出され、Webサービス5回を呼び出します。マクロWebサービスオフィス - 複数回呼び出されます

svc = createUnoService("com.sun.star.sheet.FunctionAccess") 
dim ss as string 
ss = getWSAdress() + "webservices/" + t 
sendWS=svc.callFunction("WEBSERVICE",Array(ss)) 

は、私は、Webサービスが5回呼び出されることを避けることはできますか?

+1

私は1つのコードラインがWebサービスを5回呼び出すとは思わない。私は、マクロ自体が5回呼び出されると信じています。マクロコードはどうやって呼びますか?それは 'Sub'か' Function'ですか?そして、あなたはそれをどのように正確に呼んでいますか?セルの式を介した 'UDF'として?ボタンをクリックするとイベントリスナー経由ですか? –

+0

私は手動で呼び出すサブです。私は、データベースに複数回書き込まれたデータを送信していることに気付きました。さらに、ブレークポイントを使用することで関数が1回だけ呼び出されることを確認しました。 – thomas

答えて

0

テスト済みです。 WEBSERVICEは、各コールで次のHTTP 1.1要求を行います。

PROPFIND /test HTTP/1.1 
Keep-Alive: 
Connection: TE, Keep-Alive 
TE: trailers 
Host: 192.168.0.10:2000 
Depth: 0 
Content-Length: 237 
Content-Type: application/xml 
Pragma: no-cache 
User-Agent: LibreOffice 
Post-Data: 
<?xml version="1.0" encoding="utf-8"?> 
<propfind xmlns="DAV:"><prop> 
<resourcetype xmlns="DAV:"/> 
<IsReadOnly xmlns="http://ucb.openoffice.org/dav/props/"/> 
<getcontenttype xmlns="DAV:"/> 
<supportedlock xmlns="DAV:"/> 
</prop></propfind> 

PROPFIND /test HTTP/1.1 
Connection: TE 
TE: trailers 
Host: 192.168.0.10:2000 
Depth: 0 
Content-Length: 237 
Content-Type: application/xml 
Pragma: no-cache 
User-Agent: LibreOffice 
Post-Data: 
<?xml version="1.0" encoding="utf-8"?> 
<propfind xmlns="DAV:"><prop> 
<resourcetype xmlns="DAV:"/> 
<IsReadOnly xmlns="http://ucb.openoffice.org/dav/props/"/> 
<getcontenttype xmlns="DAV:"/> 
<supportedlock xmlns="DAV:"/> 
</prop></propfind> 

PROPFIND /test HTTP/1.1 
Connection: TE 
TE: trailers 
Host: 192.168.0.10:2000 
Depth: 0 
Content-Length: 237 
Content-Type: application/xml 
Pragma: no-cache 
User-Agent: LibreOffice 
Post-Data: 
<?xml version="1.0" encoding="utf-8"?> 
<propfind xmlns="DAV:"><prop> 
<resourcetype xmlns="DAV:"/> 
<IsReadOnly xmlns="http://ucb.openoffice.org/dav/props/"/> 
<getcontenttype xmlns="DAV:"/> 
<supportedlock xmlns="DAV:"/> 
</prop></propfind> 

HEAD /test HTTP/1.1 
Connection: TE 
TE: trailers 
Host: 192.168.0.10:2000 
Pragma: no-cache 
User-Agent: LibreOffice 

GET /test HTTP/1.1 
Connection: TE 
TE: trailers 
Host: 192.168.0.10:2000 
Accept-Encoding: gzip 
Pragma: no-cache 
User-Agent: LibreOffice 

あなたは正しいです。各呼び出しには5つの要求があります。 PROPFINDリクエストは、HTTP WebDAV拡張から取得されます。

WebサービスがWebDAVをサポートしているか、GET要求に反応する必要があります。

+0

GETリクエストをテストする簡単なPHPベースの方法はありますか? – thomas

+0

ちょうどそれを見つけました:$ _SERVER ['REQUEST_METHOD'] == "GET" – thomas