2010-08-20 15 views
10

Ben 160by2 gibi web sitesinden cep telefonunuza SMS göndermek için bir web uygulaması geliştiriyorum.PHP ile GET yöntemine göre istek HTTP başka bir web sitesine göndermek için nasıl

SMS Ağ Geçidi sağlayıcısı smslane.com tarafından sağlanan API'da belirtildiği gibi HTTP GET isteği için gereken URL'yi hazırlayabilirim, burada link for the API.

PHP'den HTTP isteği nasıl gönderilir?

Bu amaçla cURL kullandım, ancak yanıt görüntülenmiyor. Burada ben kullanılan kod, bilinmeyen port numarası, port numarası için destek ekibine gönderilecek çünkü

<?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()

kullanılmamıştır olduğunu. (GET yöntemi ile fsockopen için herhangi bir kod davet edilirse :).

Bunu yapmak için başka yöntemler var mı? Herhangi bir yardım gelebilir.

Şimdiden teşekkürler.

DÜZENLEME

herhangi bir söyler misiniz bunun için olası vermek kodu cURL hariç ve eğer bu HTTP isteği göndermek için başka bir yolu yoktur.

Bu soruyu soruyorum çünkü şu anki cURL kodu yürütme için çok zaman alıyor ve 60 saniye sonra başarısız oluyor, çünkü yerel sistemimde php.ini içinde max_execution_time değerini 120'ye yükseltmiştim, çünkü benim için iyi değil :(. Birazdan kapalı görebilmesi için koduyla yanlış

+0

neler var URL? Lütfen kullanıcı adınızı ve şifrenizi dezenfekte ettiğinizden emin olunuz.Yanlış olarak hatalı bir talep gönderiyor olabilirsiniz – Shabbyrobe

+0

@webdestroya Eğer cevaplarım varsa cevapları kabul edebilirim :) – srinivas

+0

@Shabbyrobe soruyu güncellediniz. Burada kukla detayları sağladım ama gerçek detaylar için verilen web sitesindeki kontrol panelinden SMS gönderebiliyorum. – srinivas

cevap

11

Sorununuz, URL'nin yapılandırılması. Sorgu dizesinde eklediğiniz boşluklar, hatalı biçimlendirilmiş bir istek URL'sinin gönderilmesine neden olur.

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; 

response.php:

<?php 
print_r($_GET); 

request.php çıktısı İşte

koşullarınızı kopyalayan bir örnektir :

Array 
(
    [foo] => yes 
) 

Bunun nedeni, sorgu dizesinin düzgün şekilde kodlanmaması ve isteğin yorumlanmasının sunucunun URL'nin ilk boşlukta bittiğini varsaymasıdır; bu durumda, bu sorgunun ortasında: foo=yes we can&baz=foo bar.

düzgün sorgu dizesi URL kodlamasından ilgilenir http_build_query kullanarak URL oluşturmak gerekiyor ve daha okunabilir bir çok bakmak genellikle kod yapar:

echo http_build_query(array(
    'user'=>'abc', 
    'password'=>'xyz', 
    'msisdn'=>'1234', 
    'sid'=>'WebSMS', 
    'msg'=>'Test message from SMSLane', 
    'fl'=>0 
)); 

Ayrıca CURLOPT_RETURNTRANSFER ayarlamalısınız:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
+0

+1 Çok iyi bir açıklama için önerinizi kontrol edeceğim – srinivas

+0

Sorunun cevabını kontrol edebilir misiniz? Bu yardım için teşekkürler .. – srinivas

+0

. Bunu cevap olarak kabul ediyorum çünkü sorunumu çözdüm :) şerefe. – srinivas

6
<?php 
print file_get_contents("http://some_server/some_file.php?some_args=true"); 
?> 
+0

Rook bunu deneyebilir :) – srinivas

1

şey. Eğer yanıtını görebilirsiniz? hatta bir dosyaya tepkisini indirmek için wget kullanabileceği bir tarayıcıya url'yi yapıştırarak çalıştı var. I Eğer port 80'i varsayılan http portu olarak kullanacağınız fsocket'i denemek isterseniz varsayalım.

+0

@AIW Tarayıcıda URL'yi denedim ve mesajın gönderdiği yanıt verildi. – srinivas

+0

sonra URL kodlaması yapmıyor olabilirsiniz. ayrıca dönüş transferini doğru olarak ayarlayın. –

1

Aşağıdaki kodu kullanmayı deneyin.

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

sunucunuzda HttpRequest uzantısı (hisse object0 yüklü olduğundan emin olun.

+0

bilgi için teşekkürler, bu uzantı hakkında hiç bir şey bilmiyordum. –

+0

HTTPRequest uzantısını sistemimde/sunucumda nasıl yükleyebilirim? Bu yöntemi denedim ancak uzantı yüklenemedi. Bu uzantıyı nasıl kuracağımı anlayamadım. – srinivas

2

Aşağıdaki kod Kıvrık bir HTTP isteği ve $content yılında yanıtı verecektir.

<?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; 
?> 
İlgili konular