0

Nexmo API を使用してテキスト メッセージを送信するように PHP スクリプトをセットアップしましたが、HTTP Get リクエストのエンコード方法に問題があります。スクリプトは、保存されたデータからいくつかの変数を取得してから起動します。私は PHP の経験がなく、すでにこれに多くの時間を費やしてきました。これは私の最後の手段です。次のコードでどこが間違っているかわかる人はいますか?

リクエストの意図した形式:

https://rest.nexmo.com/sms/json?api_key=XXX&api_secret=XXX&to=XXX&from=XXX&text=XXX

コード:

function sendText () {

    $api_key = $settings['consumer_key'];
    $api_secret = $settings['consumer_secret'];
    $recipient = $settings['recipient'];
    $from = $settings['from'];
    $text = $settings['sms_contents'];

    $url = 'https://rest.nexmo.com/sms/json';
    $data = array_merge($data, array('api_key' => $api_key, 'api_secret' => $api_secret, 'to' => $recipient, 'from' => $from, 'text' => $text));

    $post = '';
    foreach($data as $k => $v){
        $post .= "&$k=$v";
    }

    $opts = array('http' =>
            array(
                'method'  => 'POST',
                'header'  => 'Content-type: application/x-www-form-urlencoded',
                'content' => $post
            )
        );
    $context = stream_context_create($opts);
    $from_nexmo = file_get_contents($url, false, $context);

    }

sendText();
4

3 に答える 3

1

私はあなたがエンコーディングをしているとは思わない、ここに私がすることがある:

foreach($data as $k => $v){
    $post .= "&$k=".urlencode($v);
}
于 2013-04-26T04:41:31.847 に答える
0
Please try executing following code snippet

function sendText () {

$api_key = $settings['consumer_key'];
$api_secret = $settings['consumer_secret'];
$recipient = $settings['recipient'];
$from = $settings['from'];
$text = $settings['sms_contents'];

$url = 'https://rest.nexmo.com/sms/json';
$data = array_merge($data, array('api_key' => $api_key, 'api_secret' => $api_secret, 'to' => $recipient, 'from' => $from, 'text' => $text));

$post=http_build_query($data);

$opts = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $post
        )
    );
$context = stream_context_create($opts);
$from_nexmo = file_get_contents($url, false, $context);

}
sendText();
于 2013-04-26T05:30:39.340 に答える
0

urlencode()転送された値に使用してみてください:

$post = array();

foreach($data as $k => $v){
    $post[] = $k . '=' . urlencode($v);
}

$post = implode('&', $post);

$opts = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $post
        )
    );
于 2013-04-26T04:41:22.563 に答える