【发布时间】:2021-11-16 22:52:52
【问题描述】:
我是 Visa 开发者平台 (VDP) API 的新手,在尝试使用 php 将响应的输出作为 json 读取时遇到了问题。我遵循了教程here。我正在使用Offers Data API。
我的目标是能够生成要在前端显示的交易列表。我试图通过读取 json 输出并解析交易信息来做到这一点。
这是原始教程的内容,并且效果很好:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_PORT, 443);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_SSLCERT, $cert);
curl_setopt($curl, CURLOPT_SSLKEY, $key);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl); //This output contains the json output as well
$response_info = curl_getinfo($curl);
为了获取信息,我正在运行:$response_data = file_get_contents($response);,这似乎不起作用。由于输出的不仅仅是 json,还有其他信息,我无法运行:$arr = json_decode($response,true); 来解析 json。这是 json 的样子:
{"ReturnedResults":4,"StartIndex":1,"Offers":[{"indexNumber":1,"offerContentId":105515,"offerId":
等等。 json 以 {"indexNumber":1 开头,之前的所有内容都需要丢弃。
请让我知道我能做些什么来解决这个问题,或者是否有更好的方法来实现目标。谢谢!
【问题讨论】:
-
tutorial here...在哪里?没有提供链接。Since the output it not just the json...那么它到底是什么样子的?举个例子。what I can do to fix this...我们不知道,因为您没有链接到任何文档,没有向我们展示您提出的 cURL 请求,没有向我们展示您得到的响应或您期望的响应。我们根本不知道具体发生了什么。模糊的描述和部分细节不是有用的信息。请提供问题的minimal reproducible example,以便我们提供实际帮助。另请参阅How to Ask 以获得更一般的指导。谢谢。 -
当响应不仅仅是 json 时,您必须以某种方式解析它,无论是通过提供的解决方案还是您自己的解决方案。注意:函数
file_get_contents期望文件名参数不是响应内容,可以用作 curl 的部分替代,但那是另一个主题 -
抱歉,发帖前忘记添加链接了。我更新了帖子。 @Kazz 有没有我可以使用的替代方案?也许我可以将信息存储在文件中然后读取文件?
-
请重新阅读我的评论并提供所有所要求的信息,而不仅仅是其中的一部分。
-
猜测,这可能是因为您设置了
curl_setopt($curl, CURLOPT_VERBOSE, 1);- 这将使cURL 输出您在生产中不需要的各种调试信息。您应该删除该行,或者使用第二个选项将输出重定向到单独的流(按照stackoverflow.com/a/14436877/5947043 的说明)