【发布时间】:2013-10-08 20:58:49
【问题描述】:
所以,我有这个方法,我需要调用一个外部 url(不同的域)。类似于http://192.168.2.2:9090/send?num=100&txt=text; 有没有不使用 curl 的方法来做到这一点?
我想我应该澄清一下,我曾尝试将 curl 与 yii-curl 扩展一起使用,但不知何故它似乎不起作用。当我提供一个完整的格式化 url 时它可以工作,但是如果我尝试使用 num 和 txt 的参数修改 url,由于某种原因它不起作用。最好我正在寻找一个没有 curl 的解决方案,但如果这不可能,我可以使用一些帮助来格式化和执行正确的 url,这样我也可以为 url 提供参数。谢谢。
编辑:我不认为 file_get_contents() 会起作用,因为 URL 实际上是发送短信的短信网关。电话号码和短信文本作为参数提供。如果我猜错了,请告诉我。
编辑 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 已启用,我可以通过在浏览器上键入来访问该 url。还尝试在 url 上使用 urlencode。
【问题讨论】:
-
如果在 php.ini 中启用了 url_fopen ,几乎所有的 php 文件函数都可以使用 url (我相信这是默认设置。它通常适用于我的所有安装)。所以 file_get_contents($url) 会返回一个字符串。
-
行不通。该网址实际上是发送短信的短信网关。电话号码和短信文本作为参数提供。
-
你也可以使用ajax。
-
您能否详细说明“不起作用”的含义?为什么它不起作用?你试过什么没用?你尝试的时候有没有报错?为什么它是 SMS 网关会阻止它工作?如果 sms 网关只是一个等待请求的服务器,就像任何其他接受 http 请求的服务器一样(即使在不同的端口下),它应该可以工作。短信网关接受 curl 请求而不接受来自标准 php 的 http 请求有何不同?
-
@Jonathan Kuhn,好吧,我想我对仅与文件有关的函数名 file_get_contents 感到困惑。不过,事情仍然很奇怪,我猜我将参数传递给了错误的 url。就像这是 url 192.168.2.2:9090/send?num=100&txt=text 它正在与 file_get_contents() 一起使用,但是当我尝试修改提供变量的文本的值时,它会变得混乱并且我收到一个错误的请求错误(我也尝试了 urlencode)。我应该如何在这里传递变量 say $text 作为文本?