执行外部获取 url 请求


Execute external Get url request

所以,我有这种方法,我需要调用外部网址(不同的域(。这有点像http://192.168.2.2:9090/send?num=100&txt=text;有没有办法在不使用卷曲的情况下做到这一点?

我想我应该澄清一下,我已经尝试过将 curl 与 yii-curl 扩展一起使用,但不知何故它似乎不起作用。当我提供整个格式化的 url 时它有效,但如果我尝试使用 num 和 txt 的参数修改 url,由于某种原因它不起作用。最好我正在寻找没有 curl 的解决方案,但如果这是不可能的,我可以在如何格式化和执行正确的 url 方面使用一些帮助,这样我也可以向 url 提供参数。谢谢。

编辑:我认为file_get_contents((不会起作用,因为URL实际上是发送到发送短信的SMS网关。 电话号码和SMS文本作为参数提供。如果我猜错了,请告诉我。

编辑2:这是我在这里提出建议后尝试的。

public function sendTXTSMS($sentToNum,$text)
        {
            $construct_url="http://192.168.2.2:9090/send?num={$sentToNum}&txt={$text}";
            file_get_contents($construct_url);
        }

然后叫它像,

    $text='Lorem ipsum dolor ........ ';
$this->sendTXTSMS(XXXXXXXXXX,$text)

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

现在我收到一个HTTP request failed! HTTP/1.1 400 Bad Request错误。 allow_url_fopen已启用,我可以通过在浏览器上键入来访问 url。还尝试在网址上使用 urlencode。

如果是 GET 请求,您可以使用 file_get_contents($url); .

如果你需要更多的选择,你可以尝试HTTP库,但没有理由不直接使用libcurl。 这是标准做法。

它连接到与SMS相关的服务这一事实无关紧要。 如果它是可以连接到的服务器上 Web 服务的 URL,则可以向其发出请求。

如果在 php.ini 中启用allow_url_fopen file_get_contents()将起作用,但我认为您的问题是:

当我提供整个格式化的 url 时它有效,但如果我尝试修改 带有 num 和 txt 参数的 URL,由于某种原因它不起作用。

您需要对数据进行编码:

$test = urlencode($text);
$sentToNum = urlencode($sentToNum);
$construct_url = "http://192.168.2.2:9090/send?num={$sentToNum}&txt={$text}";

是的,您可以使用file_get_contents http://php.net/manual/en/function.file-get-contents.php

使用 curl 应该是一个更好的选择,因为您可以轻松处理 http 状态代码...

但是无论有没有 curl,你都需要正确构建你的 url,urlencode应该在参数上使用,而不是在 url 上:

$sentToNum = urlencode($sentToNum);
$text = urlencode($text);
$construct_url="http://192.168.2.2:9090/send?num={$sentToNum}&txt={$text}";