Frage

Ich entwickle eine Web-Anwendung für von der Website SMS an Mobile Senden wie 160by2 .

kann ich die URL der Vorbereitung auf die HTTP-GET-Anforderung erforderlich, wie in dem von den SMS-Gateway-Provider bereitgestellt API erwähnt smslane.com , hier ist der Link für die API .

, wie die HTTP-Anforderung von PHP senden?

Ich habe cURL zu diesem Zweck aber die Antwort wird nicht angezeigt. hier ist der Code i verwendet,

<?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() wurde nicht verwendet, da die Portnummer unbekannt, das Support-Team für die Portnummer verschickt. (Falls vorhanden Code für fsockopen durch GET-Methode ist :) eingeladen. )

gibt es andere Methoden, dies zu tun?

Jede Hilfe ist willkommen.

Vielen Dank im Voraus.

Bearbeiten

Kann jemand mir sagen, ist es eine andere Möglichkeit, außer diese HTTP-Anforderung zu senden cURL und wenn möglich gibt Code dafür.

Ich frage dies, weil der aktuelle Code cURL zu viel Zeit für die Ausführung zu nehmen und nicht nach 60 Sekunden, erhöht i max_execution_time bis 120 in der php.ini auf meinem lokalen System, auch wenn es nicht gut für mich tut :(.

War es hilfreich?

Lösung

Ihr Problem ist die Art, wie Sie die URL konstruieren. Die Räumen Sie in dem Query-String einschließlich wird in einem fehlerhaften URL gesendet zur Folge hat.

Hier ist ein Beispiel, das Ihre persönlichen Umstände repliziert:

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);

Die Ausgabe von request.php ist:

Array
(
    [foo] => yes
)

Der Grund hierfür ist der Abfrage-String nicht richtig codiert ist und der Server die Anforderung der Interpretation übernimmt die URL endet an dem ersten Raum, der in diesem Fall in der Mitte der Abfrage ist. foo=yes we can&baz=foo bar

Sie benötigen eine URL erstellen mit http_build_query , die kümmern uns Ihre Query-String richtig von urlencoding und in der Regel viel besser lesbar den Code Look macht:

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

Sie müssen auch CURLOPT_RETURNTRANSFER festlegen:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

Andere Tipps

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

Der Code unten wird eine HTTP-Anforderung mit curl machen und die Antwort in $content zurück.

<?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;
?>

nichts falsch mit Ihrem Code, dass ich sofort sehen kann. Sie haben versucht, die URL in einen Browser einfügen, so dass Sie die Antwort sehen kann? Sie könnten sogar die Antwort auf eine Datei zum Download verwenden wget. Ich nehme an, wenn Sie fsocket versuchen möchten, dass Sie Port 80 verwenden würde, dass die Standard-HTTP-Port ist.

Versuchen Sie folgenden Code verwenden.

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

stellen Sie sicher, dass Sie Httprequest Erweiterung (Anteil object0 in Ihrem Server geladen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top