CURL: BAD REQUESt ошибка при попытке вызвать http URL - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь вызвать sms-API с помощью http-адреса. Я пытаюсь вызвать URL-адрес с помощью curl в php. Я получаю ошибку BAD REQUEST. Пожалуйста, объясните, что я делаю неправильно.

// create a new cURL resource
    $ch = curl_init();
    $string1 = "http://api.znisms.com/post/smsv3.asp?userid=alpesh67&apikey=74c6314840a16c5e7db00415a03181f7&message= Congratulation you have been successfully registered in the Placement Management System \n Email:".$email."\n Password:".$password."&senderid=PMS12345&sendto=".$contactno."";
    echo $string1;
    // set URL and other appropriate options
     curl_setopt($ch, CURLOPT_URL, $string1);
    // grab URL and pass it to the browser
    curl_exec($ch);
    //close cURL resource, and free up system resources
    curl_close($ch);
    //SMS END

Я получаю следующую ошибку:

http://api.znisms.com/post/smsv3.asp?userid=alpesh67&apikey=74c6314840a16c5e7db00415a03181f7&message= Congratulation you have been successfully registered in the Placement Management System Email:alpeshhi@gmail.com Password:123456789&senderid=PMS12345&sendto=9773396773
Bad Request

Ответы [ 4 ]

12 голосов
/ 13 марта 2012

Нельзя использовать пробелы в URL. Вам нужно URL кодировать эту строку:

&message= Congratulation you have been successfully registered in the Placement Management System \n Email:".$email."\n Password:".$password."

http://php.net/manual/en/function.urlencode.php

Возвращает строку, в которой все не алфавитно-цифровые символы, кроме -_. были заменены знаком процента (%), за которым следуют две шестнадцатеричные цифры и пробелы, закодированные как знаки плюс (+). Он кодируется так же, как размещенные данные из WWW-формы кодируются так же, как в application / x-www-form-urlencoded тип носителя. Это отличается от » Кодировка RFC 3986 (см. Rawurlencode ()) по историческим причинам, пробелы кодируются знаком плюс (+).

Я бы сделал что-то с эффектом:

// create a new cURL resource
    $ch = curl_init();
    $encoded_message = urlencode( "Congratulation you have been successfully registered in the Placement Management System \n Email:".$email."\n Password:".$password)
    $string1 = "http://api.znisms.com/post/smsv3.asp?userid=alpesh67&apikey=74c6314840a16c5e7db00415a03181f7&message=".$encoded_message."&senderid=PMS12345&sendto=".$contactno."";
    echo $string1;
    // set URL and other appropriate options
     curl_setopt($ch, CURLOPT_URL, $string1);
    // grab URL and pass it to the browser
    curl_exec($ch);
    //close cURL resource, and free up system resources
    curl_close($ch);
    //SMS END
1 голос
/ 13 марта 2012

Используйте urlencode () в URL, так как есть пробелы.Также рекомендуется включить заголовок сгибания следующим образом:

$headers = array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8");

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1 голос
/ 13 марта 2012

Это может быть связано с передачей сообщения с пробелами в URL. Попробуйте urlencod

0 голосов
/ 27 февраля 2019

ЭТОТ КОД ДЛЯ ОТПРАВКИ Сообщение после регистрации завершено. Я думаю, что это полезно для вас

$Res = mysqli_query($conn, $str);
if ($Res) 
{
    $last_Id=mysqli_insert_id($conn);
    $message="Registration Successful your Reg.Id is $last_Id You Get Confirmation Message if your Registration Accepeted.";
    $contact=$_POST['contact'];      
    $url = "http://api.znisms.com/post/smsv3.asp?userid=Test1234&apikey=74c6714840a16c5e7db00815a03181f7&message=".urlencode($message)."&senderid=KKK1278&sendto=".urlencode($contact)."";

    // create a new cURL resource
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    // Process your response here
    echo $response;
    //header('location:../stdRegistration.php');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...