Top > OOobbs2 > 44
  • The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
  • Go to OOobbs2/44.

** [[OOobbs2/44]] [#zda3c4a3]
-''サマリ'': インターネットにPOST
-''環境'': Calc
-''状態'': 未解決
-''投稿者'': [[Yk]]
-''投稿日'': 2007-07-05 (木) 23:36:28

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

ExcelならInet.Executeで実現できるのですが、
Openofficeの場合、JavaとかJavaScriptを使って何とかならないでしょうか??
*** 回答 [#x6962e56]
- Javaなら java.net パッケージを利用する。JavaScript だと XMLHttpRequest を利用するといいと思います。XMLHttpRequest は OOo の JavaScript で動くのかどうなのか不明ですが。

OOoBasic で行うのなら、com.sun.star.connection.Connector サービスを利用します。
-参考
--http://www.oooforum.org/forum/viewtopic.phtml?t=17645
--http://www.oooforum.org/forum/viewtopic.phtml?t=7063

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

-- [[はにゃ?]] &new{2007-07-14 (土) 11:31:46};
- OOo の javascript では createXMLHttpRequest is not defined. で使えませんでした。 -- [[はにゃ?]] &new{2007-07-14 (土) 12:17:26};
- 追記、OOo の javascript は http://www.mozilla-japan.org/rhino/ を利用。 -- [[はにゃ?]] &new{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>


-- [[はにゃ?]] &new{2007-07-27 (金) 02:21:04};

#comment
*** 感想,コメント,メモ [#b9e1dc86]

#comment

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