【问题标题】:Alternative to file_get_contents()替代 file_get_contents()
【发布时间】:2014-01-28 10:50:03
【问题描述】:

我知道以前有人问过这个问题,但可能不是在我使用的上下文中。

我们的拨号系统有一种将基于表单的线索输入到拨号器的方法。你必须访问某个网站, 例如:

http://www.website.com/non_agent_api?source=webform&telephone_number=0123456789&name=Bloggs

我正在使用

file_get_contents('http://www.website.com/non_agent_api?source=webform&
telephone_number=0123456789&name=Bloggs')

但它似乎很受欢迎,我说只有 70% 的潜在客户被正确添加。

有人知道替代方案吗?

【问题讨论】:

  • 你可以尝试使用 curl。它还有更多选择。我只是在另一个答案中展示了一些示例:stackoverflow.com/questions/20924100/…
  • 谢谢,我会调查的。
  • 一直滚动到链接答案的底部,然后查看我在那里定义的 myCurl 函数。可能会成为一个起点......
  • 您知道“添加潜在客户”是如何失败的吗?可能是号码格式错误,名称中有空格或其他“禁止”字符等?我怀疑file_get_contents() 实际上是你的问题。这可能是the X-Y problem的情况?
  • 您可以/应该记录和分析错误——无论是在脚本端还是在远程服务器端(如果您可以控制它)。失败的请求很可能在某处导致错误。

标签: php file-get-contents


【解决方案1】:

file_get_contents 的失败不太可能是问题的根本原因。您更有可能创建了格式错误的请求 - 例如,您没有正确地对参数进行 URL 编码。您是否有在生成请求之前验证输入的方法?你使用正确的编码吗?您是否知道服务器端的任何验证规则可能会导致您的请求失败?

您可以尝试使用 cURL 作为file_get_contents 的替代品 - 这就是您所提问题的答案。但更可能的实际问题在于您的请求的正确编码/验证。

示例:

$name = "Freddy Mercury";
$e_name = urlencode($name);
$request = "http://www.server.com/addEntry.php?name=".$e_name;
echo $request

结果

http://www.server.com/addEntry.php?name=Freddy+Mercury

如您所见,“禁止”空格已替换为+ 符号。您可能希望在生成请求之前包含其他验证功能。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-08-08
    • 2019-04-30
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多