【问题标题】:Trying to send a http get request from a php file to a server and receive a http response尝试从 php 文件向服务器发送 http get 请求并接收 http 响应
【发布时间】:2012-03-21 14:57:25
【问题描述】:

我正在尝试将 php 文件中的 http get 请求发送到服务器并接收响应。

function broadcastRequest($catCommand,$command,$prop){
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL,'http://'.$prop["ipServer"].':'.$prop["portVLM"].$prop["startURL"].$catCommand."%20".$prop["broadcastName"].'%20'.$command);
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    $res = curl_exec ($ch);
    $res = simplexml_load_file($res);   
    curl_close ($ch);
}
  • 如果我回显第一个 $res,我可以读取数字 1
  • 第二个$res 不会加载,因为simplexml_load_file() 在我的记事本++ 中没有突出显示语法

有人可以向我解释我做错了什么,或者建议另一种工作方式吗?

【问题讨论】:

  • 试试print_r($res); 并在此处写入结果
  • 不要担心符号高亮!我很确定这个函数存在;)如果 PHP 告诉你它是未定义的,也许你必须允许 SimpleXML PHP 扩展,但我认为它包含在核心中现在(不确定)

标签: php curl get httprequest httpresponse


【解决方案1】:

首先,Notepad++ 的语法高亮与是否有效完全无关。它只是读取名称,您会注意到 simplexml_load_file 从未突出显示。

现在解决问题。 $res 只是 curl_exec 返回的布尔值,因为您没有设置 CURLOPT_RETURNTRANSFER 选项,如文档中所述。但是,更简单的方法是直接加载它:

function broadcastRequest($catCommand,$command,$prop) {
    $res = simplexml_load_file('http://' . $prop["ipServer"] . ':' . $prop["portVLM"] . $prop["startURL"] . $catCommand . '%20' . $prop["broadcastName"] . '%20' . $command);
}

但是,如果您想使用 cURL,只需设置附加选项:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

【讨论】:

    【解决方案2】:

    看起来您需要设置 CURLOPT_RETURNTRANSFER 选项。但是,这样做可能更容易:

    $res = file_get_contents($uri);
    

    【讨论】:

    • file_get_content 确实是一个更简单的解决方案,我对其进行了测试,但仍然没有得到响应..我使用了 print_r 和 echo..希望什么也不打印。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2011-03-03
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多