Mathematica 8.0使用HTTP POST和XML与Web服务器JSP进行交互

我一直负责使用Mathematica通过使用HTTP POST和XML的JSP与第三方的Web服务器进行交互。 我需要发送的例子:

<html> <head></head> <body> <form method="post" action="http://www. ... .com/login.jsp"> <textarea name="xml" wrap="off" cols="80" rows="30" spellcheck="false"> <loginInfo> <param name="username" type="string">USERNAME</param> <param name="pwd" type="string">PASSWORD</param> </loginInfo> </textarea> <input type="hidden" name="Login" value="1"/> <input type="submit" name="go" value="go" /> </form> </body> </html> 

我将收到的例子(XML):

 <UserPluginInfo> <PluginInfo> <param name="pluginUid" type="string">1</param> </PluginInfo> <UserInfo> <param name="username" type="string">USERNAME</param> </UserInfo> </UserPluginInfo> 

我发现了Robert Raguet-Schofield在2009年撰写的一篇关于与Twitter进行交互的博客,该博客使用J / Link访问Java来执行HTTP POST并处理响应。

我的问题是,这是完成我的任务的最好方法还是Mathematica从2009年开始发展,有更好的方法(更直接)来完成我的任务?

虽然这可能不是一个更好的方法,但是绕过J / Link需求的另一种方法是build立一个中间的CGI脚本来将你的请求从GETPOST

该脚本文件位于可访问的服务器上,它将采用指定的GET查询,在目标页面上发出POST请求,然后以正常方式输出/返回结果XML。

例如,在PHP中使用curl可以很好地工作 – 虽然显然可以在几乎任何CGI语言中实现相同的function。

 <?php $c = curl_init(); // set the various options, Url, POST,etc curl_setopt($c, CURLOPT_URL, "http://www. ... .com/login.jsp"); // Target page curl_setopt($c, CURLOPT_HEADER, false); curl_setopt($c, CURLOPT_POST, true); curl_setopt($c, CURLOPT_RETURNTRANSFER, false); // POST the incomming query to the Target Page curl_setopt($c, CURLOPT_POSTFIELDS, $_SERVER['QUERY_STRING']); curl_exec($c); curl_close($c); // Output the XML response using header/echo/etc... // You might need to also send some of the POST request response headers // use CURLOPT_HEADER to access these... ?> 

从Mathmatica的angular度来看,这非常简单,因为您只需使用内置的import方法在代理页面上创build标准的GET请求,但从login页面上的POST请求获取结果XML。