执行外部Get url请求

时间:2013-10-08 20:58:50

标签: php curl yii

所以,我有这个方法,我需要调用外部URL(不同的域)。它类似http://192.168.2.2:9090/send?num=100&txt=text;有没有办法在不使用curl的情况下执行此操作?

我想我应该澄清一下,我尝试过使用带有yii-curl扩展名的curl,但不知怎的,它似乎不起作用。当我提供一个完整的格式化URL时,它可以正常工作,但是如果我尝试使用params为num和txt修改url,则由于某种原因它不起作用。最好是我正在寻找一个没有卷曲的解决方案,但如果这是不可能的,我可以使用一些帮助如何格式化和执行一个正确的URL,所以我也可以提供params到网址。感谢。

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

编辑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)

XXXXXXXXXX当然是这里掩盖的电话号码。

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果启用allow_url_fopen,

file_get_contents()将起作用,但我认为你的问题是:

  

当我提供一个完整的格式化网址但是如果我尝试修改时,它可以正常工作   对于num和txt 的参数的网址,由于某种原因它不起作用。

什么代码修改了网址?

答案 3 :(得分:0)

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

但无论是否有卷曲,您都需要正确构建自己的网址,urlencode应该用于params,而不是url:

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