PHP cURL, сгенерированный из POSTMAN, работает на почтальоне, но не в php коде - PullRequest
0 голосов
/ 04 марта 2020

Я экспортировал cURL POST из POSTMAN, где он работает просто отлично, но когда я пытаюсь запустить его как php, я получаю сообщение об ошибке, что параметры отсутствуют, а это else из if(isiset.. о параметрах.

cURL, сгенерированный почтальоном:

<?php 

class trimitereNotificare_app {

public function send($email_utilizator, $imagine) {

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://localhost/sendSinglePush.php",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array ('title' => 'CityAlert', 'message' => 'blalvlv', 'email' => "$email_utilizator", 'image' => "$imagine"),
  CURLOPT_HTTPHEADER => array(
    "Content-Type: multipart/form-data; boundary=--------------------------748736578315812240456685"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
echo $email_utilizator;
echo $imagine;

}
}

Эхо:

{"error":true,"message":"Parameters missing"}
irina@yahoo.com
scopesystems.ro/scopesystems.ro/teste/Pictograme/Strazi si trotuare/

Которые верны как данные, которые я Перешли к функции.

И. php sendSinglePu sh:

if($_SERVER['REQUEST_METHOD']=='POST'){ 
//hecking the required params 
if(isset($_POST['title']) and isset($_POST['message']) and isset($_POST['email'])){

    //creating a new push
    $push = null; 
    //first check if the push has an image with it
    if(isset($_POST['image'])){
        $push = new Push(
                $_POST['title'],
                $_POST['message'],
                $_POST['image']
            );
    }else{
        //if the push don't have an image give null in place of image
        $push = new Push(
                $_POST['title'],
                $_POST['message'],
                null
            );
    }

    //getting the push from push object
    $mPushNotification = $push->getPush(); 

    //getting the token from database object 
    $devicetoken = $db->getTokenByEmail($_POST['email']);

    //creating firebase class object 
    $firebase = new Firebase(); 

    //sending push notification and displaying result 
    echo $firebase->send($devicetoken, $mPushNotification);
}else{
    $response['error']=true;
        $response['message']='Parameters missing';
    }
}else{
    $response['error']=true;
    $response['message']='Invalid request';
}

Как отмечалось в начале, 2 php говорит, что параметры отсутствуют , хотя в CURLOPT_POSTFIELDS я добавил нужные.

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Мне удалось решить проблему, изменив cURL php на:

  class trimitereNotificare_app {

    public function send($email_utilizator, $imagine) {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,            "http://localhost/sendSinglePush.php" );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_POST,           1 );
    curl_setopt($ch, CURLOPT_POSTFIELDS,     array('title' => 'CityAlert','email' => $email_utilizator,'message' => 'O alertă a fost modificată!','image' => $imagine) ); 
    curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: multipart/form-data')); 
    $result=curl_exec ($ch);
    curl_close($ch);
}
}
0 голосов
/ 07 марта 2020

Также добавляя, если кто-то сталкивается с подобными проблемами, Почтальон добавил «Новый режим генерации кода», который можно включить в настройках - если вы используете последнюю версию v.7.19, она уже включена.

Узнайте больше: https://support.getpostman.com/hc/en-us/articles/360036521074-What-is-New-Code-Generation-mode-

image New Code generation mode">

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...