在Perl中发出HTTP GET请求的最简单方法是什么?

时间:2020-03-06 14:44:15  来源:igfitidea点击:

我有一些用PHP编写的代码,用于使用我们的简单Web服务,我也想在Perl中为可能喜​​欢该语言的用户提供这些代码。发出HTTP请求的最简单方法是什么?在PHP中,我可以使用file_get_contents()在一行中完成此操作。

这是我想移植到Perl的全部代码:

/**
 * Makes a remote call to the our API, and returns the response
 * @param cmd {string} - command string ID
 * @param argsArray {array} - associative array of argument names and argument values
 * @return {array} - array of responses
 */
function callAPI( $cmd, $argsArray=array() )
{
   $apikey="MY_API_KEY";
   $secret="MY_SECRET";
   $apiurl="https://foobar.com/api";

   // timestamp this API was submitted (for security reasons)
   $epoch_time=time();

   //--- assemble argument array into string
   $query = "cmd=" .$cmd;
   foreach ($argsArray as $argName => $argValue) {
       $query .= "&" . $argName . "=" . urlencode($argValue);
   }
   $query .= "&key=". $apikey . "&time=" . $epoch_time;

   //--- make md5 hash of the query + secret string
   $md5 = md5($query . $secret);
   $url = $apiurl . "?" . $query . "&md5=" . $md5;

   //--- make simple HTTP GET request, put the server response into $response
   $response = file_get_contents($url);

   //--- convert "|" (pipe) delimited string to array
   $responseArray = explode("|", $response);
   return $responseArray;
}

解决方案

看一下LWP :: Simple。
对于更多涉及的查询,甚至有一本关于它的书。

LWP ::简单:

use LWP::Simple;
$contents = get("http://YOUR_URL_HERE");

我将使用LWP :: Simple模块。

尝试使用HTTP :: Request模块。
此类的实例通常传递到LWP :: UserAgent对象的request()方法。

LWP :: Simple具有我们要寻找的功能。

use LWP::Simple;
$content = get($url);
die "Can't GET $url" if (! defined $content);