使用PHP cURL发送SMS文本消息的简单GET请求

4

我正在创建一个快速的Web应用程序,需要从php代码中发送一个由php创建的消息。 cURL显然是完成此任务的工具,但我难以理解它,无法让其正常工作。

我正在处理的API文档在这里。 特别是我想使用简单的基于GET的短信通知,该文档在这里进行了说明。 后者指出GET API只是:

http://sms2.cdyne.com/sms.svc/SimpleSMSsend?PhoneNumber={PHONENUMBER}&Message={MESSAGE}&LicenseKey={LICENSEKEY}

实际上,如果我在浏览器中输入以下URL,我会得到预期的结果:

http://sms2.cdyne.com/sms.svc/SimpleSMSsend?PhoneNumber=15362364325&Message=mymessage&LicenseKey=2134234882347139482314987123487

我现在正在尝试在 PHP 中创建相同的效果。以下是我的尝试:

<html>
<body>
<?php
$num = '13634859126';
$message = 'some swanky test message';

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://sms2.cdyne.com/sms.svc/SimpleSMSsend?PhoneNumber=".urlencode($num)."&Message=".urlencode($message)."&LicenseKey=2345987342583745349872");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
</body>
</html>

我的其他PHP网页都正常工作,所以我知道PHP和Apache已经正确设置。但是当我指向上述页面时,我的手机上没有任何消息。有谁能告诉我我错在哪里吗?

注意:所有数字都是虚假的……正如你可能已经猜到的那样。


你是在本地运行服务器吗?你可能没有给Apache拨打到更广阔的互联网的机会。 - Patrick Beardmore
你试过先将URI插入到网页浏览器中看看是否可行吗? - webbiedave
Berryman:你收到了什么回复? - ajreal
屏幕上没有显示任何内容。如果您查看下面(PurplePilot),我添加了一个打印输出语句,但是没有发送到屏幕上。我还注释掉了电子邮件中提到的“返回传输”行,但没有返回任何内容。在所有事情上,请假设我很无知。 - JnBrymn
Berryman - 你需要查看页面源代码才能检查XML响应吗? - ajreal
4个回答

10

你真的需要CURL吗?你可以直接使用PHP的file_get_contents($url)函数,它会执行GET请求并返回响应值。


被选为答案,因为它有效且易于操作...所以谢谢!尽管速度有点慢。我想象中仍然有一些更聪明的方法可以做到这一点,而不需要在短信发送之前停止。这是否涉及完整的ajax? - JnBrymn

1
如果没有返回输出,可能是cURL失败了。 检查返回资源的错误代码以确定错误的原因。
$result=curl_exec($ch);
$curlerrno = curl_errno($ch);
curl_close($ch);
print $curlerrno;

错误代码列表:libcurl-errors 我建议也使用 cURL 超时设置:
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_TIMEOUT,5);

0

0

假设您正在正确组成URL,并且像一条评论所说,手动在浏览器中检查它,我不确定数据返回时去了哪里,因此请尝试:

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // tell the return not to go to the browser

     $output = curl_exec($ch); // point the data to a variable

     print "<br />"; // output the variable
     print $output;
     print "<br />";

其他可尝试的事情包括:

     curl_setopt($ch, CURLOPT_INTERFACE, "93.221.161.69"); // telling the remote system where to send the data back
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); // pretend you are IE/Mozilla in case the remote server expects it
     curl_setopt($ch, CURLOPT_POST, 1); // setting as a post

那可能是下一步,但由于他没有收到短信,GET 请求可能甚至没有执行,因此没有数据返回。 - AndreKR
没有屏幕输出,手机也没有消息。上面的代码有问题吗?我现在真的不太了解PHP,不知道该期望什么。 - JnBrymn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接