我有一些用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;
}
Kevin Crumle.. 66
LWP ::简单:
use LWP::Simple; $contents = get("http://YOUR_URL_HERE");
对于静态字符串,双引号没有_real_开销.使用单引号的原因是让下一个程序员明白他们不需要在代码中查找插值. (8认同)
对于“ http:// URL”之类的静态字符串,最好使用单引号来节省perl寻找要插值的工作。 (2认同)
Barry Brown.. 16
LWP :: Simple具有您正在寻找的功能.
use LWP::Simple; $content = get($url); die "Can't GET $url" if (! defined $content);
bmdhacks.. 6
看看LWP :: Simple.对于更多涉及的查询,甚至还有一本关于它的书.
LWP ::简单:
use LWP::Simple; $contents = get("http://YOUR_URL_HERE");
LWP :: Simple具有您正在寻找的功能.
use LWP::Simple; $content = get($url); die "Can't GET $url" if (! defined $content);
看看LWP :: Simple.对于更多涉及的查询,甚至还有一本关于它的书.