为了账号安全,请及时绑定邮箱和手机立即绑定

没有得到预期的 PHP cURL 响应

没有得到预期的 PHP cURL 响应

PHP
慕尼黑5688855 2021-10-22 15:00:31
我有以下 PHP 代码:<?php$data = array("client_id" => "sipgate-app-web", "grant_type" => "password", "username" => "my_username", "password" => "my_password");$data_string = json_encode($data);$ch = curl_init('https://api.sipgate.com/login/sipgate-apps/protocol/openid-connect/token');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded','Accept: application/json'));$result = curl_exec($ch);echo $result;?>不幸的是,我没有得到预期的回应。我收到的回复是:{"error":"invalid_request","error_description":"缺少表单参数:grant_type"}当使用像https://onlinecurl.com这样的在线 cURL 工具和我的 cURL PHP 代码中相同的数据(URL、标题、数据)时,我得到了正确的响应。这意味着,我的 PHP 代码有问题。我在 PHP 错误日志中没有收到任何错误。手册说我必须使用以下 cURL 代码: curl \--request POST \--header 'Content-Type: application/x-www-form-urlencoded' \--header 'Accept: application/json' \--data-urlencode "client_id=sipgate-app-web" \--data-urlencode "grant_type=password" \--data-urlencode "username=my_username" \--data-urlencode "password=my_password" \https://api.sipgate.com/login/sipgate-apps/protocol/openid-connect/token由于我是 cURL 的新手,在谷歌搜索了很多之后,我不知道我做错了什么。有谁能够帮助我?编辑:您可以按原样测试我上面的 PHP 代码。如果代码正常工作,您应该得到以下响应:{"error":"invalid_grant","error_description":"无效的用户凭据"}
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

按照说明书,你的要求需要有Content-Typeapplication/x-www-form-urlencoded,看起来像这样:

key1=value1&key2=value2

因此,您需要手动或使用 将数组转换为这样的字符串http_build_query,如下所示:

$data_string = http_build_query( $data );


查看完整回答
反对 回复 2021-10-22
  • 2 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信