I'm developing a web application for sending SMS to mobile from website like 160by2.
I can prepare the URL required for the HTTP GET request as mentioned in the API provided by the SMS Gateway provider smslane.com, here is the link for the API.
how to send the HTTP request from PHP?
I used cURL for that purpose but the response is not displayed. here is the code i used,
$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 );
Your problem is the way you are constructing the URL. The spaces you are including in the query string will result in a malformed request URL being sent.
Here is an example that replicates your circumstances:
<?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;
The output of request.php is:
Array ( [foo] => yes )
The reason for this is the query string is not properly encoded and the server interpreting the request assumes the URL ends at the first space, which in this case is in the middle of the query:
foo=yes we can&baz=foo bar.
You need to build your URL using http_build_query, which will take care of urlencoding your query string properly and generally makes the code look a lot more readable:
echo http_build_query(array( 'user'=>'abc', 'password'=>'xyz', 'msisdn'=>'1234', 'sid'=>'WebSMS', 'msg'=>'Test message from SMSLane', 'fl'=>0 ));
You also need to set CURLOPT_RETURNTRANSFER:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);