160by2 のようなウェブサイトからモバイルにSMSを送信するためのウェブアプリケーションを開発しています。
SMSゲートウェイプロバイダー smslane.com 、ここに リンク)が提供するAPIに記載されているように、HTTPGETリクエストに必要なURLを準備できます。 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を構築している方法です。クエリ文字列にスペースを含めると、不正な形式のリクエスト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;
response.php:
<?php
print_r($_GET);
Request.phpの出力は次のとおりです。
Array
(
[foo] => yes
)
これは、クエリ文字列が適切にエンコードされておらず、リクエストを解釈するサーバーがURLが最初のスペース(この場合はクエリの途中)で終了すると想定しているためです:foo=yes we can&baz=foo bar
。
http_build_query を使用してURLを作成する必要があります。これにより、クエリ文字列のurlencodingが適切に処理され、通常、コードがより読みやすくなります。
echo http_build_query(array(
'user'=>'abc',
'password'=>'xyz',
'msisdn'=>'1234',
'sid'=>'WebSMS',
'msg'=>'Test message from SMSLane',
'fl'=>0
));
また、CURLOPT_RETURNTRANSFERを設定する必要があります。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
<?php
print file_get_contents("http://some_server/some_file.php?some_args=true");
?>
以下のコードは、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をブラウザに貼り付けてみましたか? wgetを使用してファイルへの応答をダウンロードすることもできます。 fsocketを試してみたい場合は、デフォルトのhttpポートとしてポート80を使用すると思います。
次のコードを使用してみてください。
$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拡張機能(サーバーでobject0を共有)がロードされていることを確認してください。