PHP,cURL请求不获取数据

PHP,cURL请求不获取数据,php,Php,我想通过github API获得一些信息,我尝试使用file\u get\u内容,但它似乎不起作用,所以我转到了cURL,它没有给出错误,但没有返回任何内容 PHP代码: if (!empty($_POST["username"])) { $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.github.com/users/".$_POST["username"]); curl_s

我想通过github API获得一些信息,我尝试使用file\u get\u内容,但它似乎不起作用,所以我转到了cURL,它没有给出错误,但没有返回任何内容

PHP代码:

if (!empty($_POST["username"])) {
        $ch=curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.github.com/users/".$_POST["username"]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $output=curl_exec($ch);
        print_r($output);
        curl_close($ch);
    }

我用CURLINFO_http_代码检查了http代码,并将其设置为0。是否有任何修复程序可以在请求时获取json数据。

按原样运行该脚本将返回有关用户代理的错误消息:

行政法规禁止的请求。请确保您的请求具有用户代理标头()。检查其他可能的原因

来自该站点:“所有API请求必须包含有效的用户代理标头。没有用户代理标头的请求将被拒绝。”

因此,要将用户代理头添加到cURL请求,请将代码更改为

<?php
if (!empty($_POST["username"])) {
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.github.com/users/".$_POST["username"]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Oussama Mater Test-App'); // line added
    $output=curl_exec($ch);
    print_r($output);
    curl_close($ch);
} else {
    echo "No POST username";
}

我曾尝试在php中使用curl访问同一个URL,似乎效果不错。签出以下示例:


提交

尝试打印错误,如果有:
echo curl\u error($ch)关闭前。看看会发生什么。你是否经过认证/允许提出该请求?如果您使用有效的用户名运行该请求,您应该会得到:“管理规则禁止的请求。请确保您的请求具有用户代理头()。检查其他可能的原因。”@kerbholz是的,我已经阅读了,这些信息没有任何身份验证,我在不同的帐户上尝试了几个与postman的请求,效果很好。@TravelingTechGuy我的错,我收到了curl_错误(资源id#4)。postman可能会发送一个用户代理请求,但您的脚本不会。还要确保
$\u POST[“username”]
是有效用户,并且不包含任何空格。(刚刚使用UserAgent集进行了测试,没有问题)我真的不知道在哪里可以找到有关User Agent的错误消息,我更改了代码,仍然没有得到任何输出,很抱歉这是我第一次使用Apissory,发布了错误的(测试)代码,修复了我的答案。如果触发了
,是否确实设置了
$\u POST[“用户名”]?你能添加一个
else{echo“no post”}
来确保吗?是的,它被触发了,只是添加了else,如果$\u post[“username”]为空,它将echo no post.Hm,那么我就不知所措了,对不起,我这边的代码工作得很好。抱歉,我无法提供更多帮助,将在<5分钟内删除我的答案工作完美的代码,是您发布的吗?@hosien in jast,您添加了mozilla代理?,请在哪里找到此代码?来自:“我们要求您使用您的GitHub用户名或应用程序名称作为用户代理头值。如果有问题,我们可以联系您。”github这么说,但与mozila配合得很好。您可以添加用户名或应用程序名。嗯,我刚下载了mozilla来尝试一下,但它仍然不起作用,jeez放弃了:(,我确实使用了我的名字作为用户头代理,但它不起作用。您不需要Firefox。但它对我来说,在错误的用户名`{“message”:“not Found”,“documentation\u url”:“}上工作很好```
<form method="post">
    <input type="text" name="username">
    <button>Submit</button>
</form>

<?php

if (!empty($_POST["username"])) {
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.github.com/users/" . $_POST["username"]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Oussama Mater Test-App');
    $output=curl_exec($ch);
    print_r($output);
    curl_close($ch);
}