405 error php get request

2019-09-14 23:03发布

问题:

I have this script and I want to make a request to a page, but it gives me a 405 help. Here is my code:

$result = "SOMETHING"
$kahootId = '0c17fb60-76c6-424c-9326-d1154cbc70d3';
$pageUrl = 'https://create.kahoot.it/rest/kahoots/' . $kahootId;
$quizheader = array(); 
$quizheader[] = 'content-type: application/json';
$quizheader[] = 'authorization: ' . $result;

curl_setopt($ch, CURLOPT_URL, $pageUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_HEADER,$quizheader);

$store2 = curl_exec($ch);
print_r($store2);
curl_close($ch);

This code returns:

HTTP/1.1 405 Method Not Allowed
Server: openresty/1.11.2.2
Date: Tue, 11 Jul 2017 20:53:03 GMT
Content-Type: application/json
Content-Length: 150
Connection: keep-alive

{"error":"javax.ws.rs.WebApplicationException","exception":"javax.ws.rs.WebApplicationException","timestamp":1499806383136,"duration":0,"errorCode":0} 

This code was based off of this python script:

回答1:

If all you need is a GET request with custom headers and no body, you can use the following method that doesn't even need Curl:

$token = "SOMETHING"
$kahootId = '0c17fb60-76c6-424c-9326-d1154cbc70d3';
$url = 'https://create.kahoot.it/rest/kahoots/'.$kahootId;

$options = array(
    'http' => array(
        'method'  => 'GET',
        'header'  => "Authorization: ".$token."\r\n"
    )
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);