你如何启用PHP来启用http调用

时间:2013-06-19 20:56:30

标签: php

在整晚尝试之后没有任何成功,这是我应该工作但不工作的代码:

<?php
// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://api.keynote.com/keynote/',
    CURLOPT_USERAGENT => 'Codular Sample cURL Request'
));
// Send the request & save response to $resp
$resp = curl_exec($curl);

if(!curl_exec($curl)){
    die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
}

// Close request to clear up some resources
curl_close($curl);
echo $resp;
?>

我得到的错误是:

Error: "Failed connect to api.keynote.com:80; No error" - Code: 7

在服务器上,我可以手动调出任何浏览器的URL,没有任何问题。

如何让php连接到互联网?

1 个答案:

答案 0 :(得分:3)

问题是fsockopen用于打开socks(即连接到指定主机/ IP上的指定端口)。

当您尝试向主机“http://google.com”打开袜子时,就像运行“ping http://google.com” - 您将收到错误 - 因为没有这样的主机“http://”

你喊的是使用http_getcurl

<?php
$response = http_get("http://www.example.com/", array("timeout"=>1), $info);
print_r($info);
?>

或删除“http://”

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>