如何通过PHP中的GET方法将HTTP请求发送到其他网站

如何通过PHP中的GET方法将HTTP请求发送到其他网站,php,sms,httprequest,http-get,sms-gateway,Php,Sms,Httprequest,Http Get,Sms Gateway,我正在开发一个web应用程序,用于从类似的网站向手机发送短信 我可以准备HTTP GET请求所需的URL,如SMS网关提供商提供的API中所述,下面是示例 如何从PHP发送HTTP请求 为此我使用了cURL,但没有显示响应。这是我使用的代码 <?php $url="http://smslane.com/vendorsms/pushsms.aspx?user=abc&password=xyz&msisdn=919898123456&sid=WebSMS&ms

我正在开发一个web应用程序,用于从类似的网站向手机发送短信

我可以准备HTTP GET请求所需的URL,如SMS网关提供商提供的API中所述,下面是示例

如何从PHP发送HTTP请求

为此我使用了cURL,但没有显示响应。这是我使用的代码

<?php 
$url="http://smslane.com/vendorsms/pushsms.aspx?user=abc&password=xyz&msisdn=919898123456&sid=WebSMS&msg=Test message from SMSLane&fl=0";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt( $ch, CURLOPT_URL, $url );  
$content = curl_exec( $ch );
$response = curl_getinfo( $ch );
curl_close ( $ch );
echo $content;
?>

fsockopen()
未使用,因为端口号未知,已将端口号邮寄给支持团队。(如果通过GET方法邀请任何fsockopen代码:))

还有其他的方法吗

欢迎任何帮助

提前谢谢

编辑

有人能告诉我除了cURL之外还有什么其他方式发送这个HTTP请求吗?如果可能的话,请给出相应的代码

我这样问是因为当前的cURL代码执行时间太长,60秒后失败,我在本地系统上将php.ini中的max_execution_time增加到120,尽管这对我没有好处:(.



我马上就能看到您的代码没有问题。您是否尝试过将url粘贴到浏览器中以便查看响应?您甚至可以使用wget将响应下载到文件中。我想如果您想尝试fsocket,您会使用端口80,因为这是默认的http端口。

您的问题在于您的构造方式g URL。查询字符串中包含的空格将导致发送格式错误的请求URL

下面是一个复制您的情况的示例:

request.php

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 
    'http://your_server/response.php?foo=yes we can&baz=foo bar'
);
$content = curl_exec($ch);
echo $content;
<?php
print_r($_GET);

原因是查询字符串没有正确编码,服务器解释请求假定URL在第一个空间结束,在这种情况下,在查询的中间:<代码> Foo=是,我们可以& BZZ= FooBar < /C> > 您需要使用URL来构建URL,这将确保正确编码查询字符串,并使代码看起来更具可读性:

echo http_build_query(array(
    'user'=>'abc',
    'password'=>'xyz',
    'msisdn'=>'1234',
    'sid'=>'WebSMS',
    'msg'=>'Test message from SMSLane',
    'fl'=>0
));
您还需要设置CULLOPT_RETURNTRANSFER:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

尝试使用以下代码

$r = new HttpRequest('http://www.xencomsoftware.net/configurator/tracker/ip.php', HttpRequest::METH_GET);
try {
        $r->send();
         echo $r->getResponseCode(); 
         if ($r->getResponseCode() == 200) 
        {
        }
    }

确保已在服务器中加载HttpRequest扩展名(ShareObject0)。

下面的代码将使用curl发出HTTP请求,并在
$content
中返回响应

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,'http://www.anydomain.com/anyapi.php?a=parameters');
$content = curl_exec($ch);
echo $content;
?>


URL是什么?请确保清除用户名和密码。您可能无意中发送了一个格式错误的请求。@webdestroya如果我得到:,我可以接受答案)@Shabberobe更新了问题,请检查。这里我提供了虚拟的详细信息,但对于实际的详细信息,我可以从网站提供的控制面板发送短信。我很确定我发现了你的问题,所以我重新修改了我的答案。Rook的答案可以用来减少执行时间,但curl几乎肯定不是你的问题-它是g要成为远程服务器。把一些查询本地主机的curl代码放在一起,你应该看到它是即时的。也许你要查询的服务器不是即时的quick@AIW我在浏览器中尝试了该url,它给出了该消息发送的响应。那么您可能没有进行url编码。同时将returntransfer设置为true。Rook可能是i could尝试以下操作:)如何在我的系统/服务器上加载HTTPRequest扩展?我尝试了那个方法,但没有加载扩展名的错误。我不知道如何安装该扩展。谢谢您的帮助。我接受这个答案,因为它解决了我的问题:)干杯。
$r = new HttpRequest('http://www.xencomsoftware.net/configurator/tracker/ip.php', HttpRequest::METH_GET);
try {
        $r->send();
         echo $r->getResponseCode(); 
         if ($r->getResponseCode() == 200) 
        {
        }
    }
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,'http://www.anydomain.com/anyapi.php?a=parameters');
$content = curl_exec($ch);
echo $content;
?>