12
votes

Comment envoyer la demande HTTP en obtenez une méthode à PHP à un autre site Web

Je développe une application Web pour envoyer des SMS au mobile à partir d'un site Web comme 160by2 .

i Peut préparer l'URL requise pour la demande HTTP GET comme mentionné dans l'API fournie par le fournisseur de passerelle SMS smslane.com , Voici le lien pour l'API .

Comment envoyer le Demande HTTP de PHP?

J'ai utilisé CURL à cette fin, mais la réponse n'est pas affichée. Voici le code que j'ai utilisé, xxx

fsockopen () n'a pas été utilisé car le numéro de port inconnu, envoyé l'équipe de support du numéro de port. (Si un code pour FSOCOPOPEN via GET METHODE est invité :). )

Y a-t-il d'autres méthodes pour ce faire?

Toute aide est la bienvenue.

Merci d'avance.

EDIT

Est-ce que quelqu'un pourrait me dire qu'il y a autre moyen d'envoyer cette demande HTTP sauf CURL et si possible. code pour cela.

Je demande cela parce que le code de courbure actuel prenant trop de temps pour l'exécution et échoue après 60 secondes, j'ai augmenté max_execution_time à 120 dans php.ini sur mon système local, même s'il est ne pas faire bon pour moi :(.


5 commentaires

Quelle est l'URL? Assurez-vous de désinfecter votre nom d'utilisateur et votre mot de passe. Vous pouvez envoyer une demande mal formée par accident.


@webdestroya je pourrais accepter des réponses si j'ai eu :)


@ShabbyRobe a mis à jour la question s'il vous plaît vérifier. Ici, j'ai fourni les détails factices mais pour des détails réels, je peux envoyer des SMS du panneau de contrôle du site Web donné.


Je suis à peu près sûr que j'ai trouvé votre problème, alors j'ai retravaillé ma réponse.


La réponse de la tour peut être utilisée pour tenter de réduire le temps d'exécution, mais CURL n'est presque certainement pas votre problème - il sera le serveur distant. Jetez ensemble un code de courbure qui interroge votre localhost et vous devriez voir qu'il est instantané. Peut-être que le serveur que vous interrogez n'est pas si rapide


5 Réponses :


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

1 commentaires

Rook peut être je pourrais essayer ceci :)



1
votes

rien de mal avec votre code que je peux voir tout de suite. Avez-vous essayé de coller l'URL dans un navigateur afin que vous puissiez voir la réponse? Vous pouvez même utiliser Wget pour télécharger la réponse à un fichier. Je suppose que si vous voulez essayer FSocket que vous utiliseriez le port 80 car c'est le port HTTP par défaut.


2 commentaires

@AIW J'ai essayé l'URL dans le navigateur et cela compte tenu de la réponse que le message envoyé.


Ensuite, vous ne ferez peut-être pas de codage d'URL. Également définir RetourTransfer à true.



12
votes

Votre problème est la façon dont vous construisez l'URL. Les espaces que vous incluez dans la chaîne de requête entraîneront une URL de demande mal formée.

Voici un exemple qui reproduit votre situation: P>

demande.php strong>:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

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


1 commentaires

Merci pour cette aide. J'accepte cela comme réponse parce que cela a résolu mon problème :) Bravo.



1
votes

Essayez d'utiliser le code suivant.

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


1 commentaires

Comment charger l'extension HTTPRequest sur mon système / serveur? J'ai essayé cette méthode mais une erreur d'erreur n'est pas chargée. Je ne pouvais pas comprendre comment installer cette extension.



2
votes

Le code ci-dessous effectuera une demande HTTP avec CURL et renvoie la réponse dans $ Content code>.

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


0 commentaires