0

curl を使用して http URL を送信しようとしましたが、まったく機能しませんでした。使用したコードは次のとおりです。

<?php

$username = 'username';
$password = 'password';
$sender='sender';
$msisdn = '+96899999999';
$content="Test MSG";
$data = "username=".$username."&password=".$password."&message=".urlencode($content)."&sender=".$sender."&msisdn=".urlencode($msisdn);

$ch = curl_init('http://bulksms.vsms.net/eapi/submission/send_sms/2/2.0');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

if ($response = curl_exec($ch)) 
{
  echo "1";
} 
 else 
{
   echo "0";
}

curl_close ($ch);
?>

常に 0 を返します。何が問題なのですか?

4

1 に答える 1

0

PHP の BulkSMS API ドキュメントを参照してください。これは、Curl を使用して SMS を送信するための包括的なコードを提供します。

簡単に調べてみると、ポート (443) 用の curl_setopt があり、POST データがわずかに異なっていることがわかります。主な違いは、あなたにはsenderフィールドがあるのに対し、彼らにはフィールドがないことです。

  $ch = curl_init( );
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_PORT, $port ); //443
  curl_setopt ( $ch, CURLOPT_POST, 1 );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_body );
  // Allowing cUrl funtions 20 second to execute
  curl_setopt ( $ch, CURLOPT_TIMEOUT, 20 );
  // Waiting 20 seconds while trying to connect
  curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 20 );

  $response_string = curl_exec( $ch );
  $curl_info = curl_getinfo( $ch );

彼らのコードから始めて、不要なものを切り取ることをお勧めします。

于 2015-05-12T17:50:27.363 に答える