如何在PHP中向REST服务发出HTTP请求?

时间:2015-01-26 16:59:54

标签: php http curl fsockopen

我想知道是否有人可以帮助我了解如何使用此信息获取JSON?我应该使用cURL还是fsockopen?

GET /market/10000002/orders/buy/?type=https://api-sisi.testeveonline.com/types/683/ HTTP/1.1
Host: https://api-sisi.testeveonline.com
  

授权:持票人jKVB8oaN9qboU5kQG4sWSoWxzSUaFkQaUyeisy8jWU3apRfYSgYsKpZGNbLh41xXEzuy-NDBX1FohEdEadaukQ2   接受:application / vnd.ccp.eve.MarketOrderCollection-v1 + json

我试过这样做,但我不知道这是否是一种可行的做法?

$fp = fsockopen("api.eveonline.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /market/10000002/orders/buy/?    type=https://api.eveonline.com/types/683/ HTTP/1.1\r\n";
$out .= "Host: https://api.eveonline.com\r\n";
$out .= "Authorization: Bearer ".auth."\r\n\r\n";
$out .= "Accept: application/vnd.ccp.eve.MarketOrderCollection-v1+json\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
    echo fgets($fp, 128);
}
fclose($fp);
}

由于

编辑1:

$opts = array('http' =>
  array(
    'method'  => 'GET',
    'header'  => "Host: https://api.eveonline.com\r\n".
    "Authorization: Bearer ".auth."\r\n".
    "Accept: application/vnd.ccp.eve.MarketOrderCollection-v1+json\r\n"
  )
);

$context  = stream_context_create($opts);
$url = 'https://api.eveonline.com/';
$result = file_get_contents($url, false, $context);

这是我下一次尝试,我仍然在努力。

1 个答案:

答案 0 :(得分:0)

fsockopen对于HTTP请求来说真的不是一个好选择,因为你必须自己处理所有事情(例如压缩,分块等)。 cURL肯定是一个选项,但我最喜欢的只是file_get_contents。您需要在配置中将allow_url_fopen设置为On,但这不是真正的安全风险,而且功能本身非常强大。