如何以正确的方式发布cUrl请求?

时间:2020-08-06 17:29:29

标签: php http curl

我正在尝试向name.com API发送请求,并检查PHP中的域可用性。我真的有一个简单的测试要求。我已经阅读了他们的文档和API,收到的错误似乎没有解决方案。过去有人使用过他们的API吗?我在做什么错了?

choose_domain.php

if(isset($_POST['domain'])){
    //get domain mae 
    $domain = $_POST['domain'];
    //
    //
    $url = 'https://api.dev.name.com/v4/domains:checkAvailability';
    $fields = array(
                'username' => $username,
                'password' => $password,
                'token' => $name_token,
                'domainNames' => array($domain)
            );
    
    //url-ify the data for the POST
    $fields_string = http_build_query($fields);
    //
    //
    //
    //open connection
    $ch = curl_init();
    //
    //
    //
    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    
    //execute post
    $result_domain = curl_exec($ch);
    
    //close connection
    curl_close($ch);
}

API响应

{"message":"Unauthenticated"} 

根据他们的API,此错误表示以下内容:

URL请求有一个结尾句点(在name.com之后)。示例: https://api.dev.name.com./v4/domains。或者,密码已经 输入但不输入用户名,反之亦然。

这根本不是真的,我的代码也不是这样。没有追踪期。

1 个答案:

答案 0 :(得分:1)

实际上,您发送的用户名和密码格式错误。 API端点期望使用https://www.name.com/api-docs/Domains#CheckAvailability中提到的用于身份验证的BASICAUTH Textbox1.text = bob.PubKey.ToHex() 格式,但是您是以原始数据或正文数据的形式发送的。

相反,您必须将username and password发送为:

username and password

因此您的完整代码如下:

curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);