【问题标题】:File get content failed to open stream - Json response文件获取内容无法打开流 - Json 响应
【发布时间】:2015-10-30 09:59:09
【问题描述】:

现在我正在使用 file_get_content(url) 进行测试,但它返回错误。

请求和响应在同一个服务器:

warning: file_get_contents(https://192.168.1.15/adverts/locations): failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in xxxxx

Web 服务返回一个 json 对象,因此函数 file_get_contents 将接收一个 json。

我想使用 cURL 方法,但它也不起作用。

所以我想开始,先修复这个错误并获取内容,然后尝试调试为什么 cURL 不起作用,因为我正在使用这个函数获取内容

{"status":"success","alerts":[],"content":{"types":[{"id":"P","description":"Permanent"},{"id":"C","description":"Contract"}]}}

【问题讨论】:

  • 试试 var_dump(dirname(FILE));或 var_dump(realpath(dirname(FILE)));调试
  • 192.168.1.15/adverts/locations 是响应 json 对象的 WS 的链接!
  • var_dump(dirname(FILE)) 返回 192.168.1.15/adverts 和 var_dump(realpath(dirname(FILE)));返回 bool(false),但如果我直接在浏览器中运行服务,这将返回 json 响应
  • 你为什么要像流一样读取 JSON 对象? JSON 是字符串类型的,您尝试将其视为流。

标签: php json web-services curl slim


【解决方案1】:

用你的网络服务 url 试试这个,如果它抛出某种异常,请告诉我们:

<?php 
    // create curl resource 
    $ch = curl_init(); 

    // set url 
    curl_setopt($ch, CURLOPT_URL, "192.168.1.15/adverts/locations"); 

    //return the transfer as a string 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    // $output contains the output string 
    $output = curl_exec($ch); 

    // close curl resource to free up system resources 
    curl_close($ch);

您确定可以在您的服务器上使用 HTTPS 吗?你有正确的设置和证书吗?

【讨论】:

  • 是的,我可以使用 HTTPS!上面的代码什么都不显示,只有一个空白页!
  • 完全正常,因为我向您展示的代码没有处理 $output 变量!尝试打印它!
  • 如果我做 var_dump($output) 结果是 bool(false)
  • 尝试使用 curl_error 调试它:php.net/manual/fr/function.curl-error.php
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多