所以,我有这个方法,我需要调用外部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。
答案 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)
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}";