Top > OOobbs2 > 44

OOobbs2/44 Edit

  • サマリ: インターネットにPOST
  • 環境: Calc
  • 状態: 未解決
  • 投稿者: Yk?
  • 投稿日: 2007-07-05 (木) 23:36:28

質問 Edit

Calcの行の情報を元に インターネットのHTMLフォームにポストするプログラムを考えています。

ExcelならInet.Executeで実現できるのですが、 Openofficeの場合、JavaとかJavaScriptを使って何とかならないでしょうか??

回答 Edit

  • Javaなら java.net パッケージを利用する。JavaScript だと XMLHttpRequest を利用するといいと思います。XMLHttpRequest は OOo の JavaScript で動くのかどうなのか不明ですが。

OOoBasic で行うのなら、com.sun.star.connection.Connector サービスを利用します。

python, beanshell からも可能なはずです。

  • はにゃ?? 2007-07-14 (土) 11:31:46
  • OOo の javascript では createXMLHttpRequest is not defined. で使えませんでした。 -- はにゃ?? 2007-07-14 (土) 12:17:26
  • 追記、OOo の javascript は http://www.mozilla-japan.org/rhino/ を利用。 -- はにゃ?? 2007-07-14 (土) 12:41:12
  • OOoBasic から beanshell で POST を行うマクロを書いてみました。
  • mytools_net.postToUrl.bsh
if (ARGUMENTS.length == 2) {
	sUrl = ARGUMENTS[0].toString();
	sPostStr = ARGUMENTS[1].toString();

	try {
		url = new java.net.URL(sUrl);
		uc = url.openConnection();
		uc.setRequestMethod("POST");
		uc.setDoOutput(true);
		uc.setDoInput(true);

		uc.setRequestProperty("Uer-Agent","Mozilla/5.0 (compatible)");
		uc.setRequestProperty("Accept-Language","ja");
		os = uc.getOutputStream();

		ps = new java.io.PrintStream(os);
		ps.print(sPostStr);
		ps.close();

		is = uc.getInputStream();
		is.close();
		/*
		reader = new java.io.BufferedReader(new java.io.InputStreamReader(is));
		//sb = new java.io.StringBuffer();
		String sb = "";
		String s = "";
		while ((s = reader.readLine()) != null) {
		   sb += s;
		}
		reader.close();
		*/
	} catch (java.net.MalformedURLException e) {
	} catch (java.io.IOException e) {
	} catch (Exception e) {
	}
}

上記 mytools_net.postToUrl.bsh を次の OOoBasic コードで呼び出します。

Sub postToUrl( sLocUrl As String, sLocPostStr As String )
  oMSPF = GetDefaultContext.getValueByName(_
 "/singletons/com.sun.star.script.provider.theMasterScriptProviderFactory")
  oMSP = oMSPF.createScriptProvider("")
  postScriptUrl = "vnd.sun.star.script:mytools_net.postToUrl.bsh?language=BeanShell&location=user"
  oScript = oMSP.getScript(postScriptUrl)
  postToUrl() = oScript.invoke( array(sLocUrl,sLocPostStr),array(),array())
End Sub

次のようにして使用します。

Sub Main
  sUrl = "http://localhost/test.php"
  sPostStr = "txt=postdata"
  data = postToUrl( sUrl, sPostStr )
End Sub

次のような簡単な cgi に対してポストはうまく動作しました。

<?php
	if (isset($_POST['txt'])) {
		$f = fopen("data.txt", "a");
		fwrite($f, htmlspecialchars($_POST['txt']) . "\n");
		fclose($f);
	}
	if (isset($_GET['txt'])) {
		$f = fopen("data.txt", "a");
		fwrite($f, htmlspecialchars($_GET['txt']) . "\n");
		fclose($f);
	}
?>
<html><body>
<form method="post" action="./test.php">
<input type="text" name="txt">
<input type="submit" value="ok">
<pre>
<?php readfile("data.txt"); ?>
</pre>
</body></html>
  • はにゃ?? 2007-07-27 (金) 02:21:04

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes