php
  • curl
  • 2015-06-20 3 views 0 likes 
    0

    Я пытаюсь отправить данные через curl POST.Ошибка PHP-анализатора curl post

    Вот что я сделал

    $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL,"https://lc-api.sdl.com/translate"); 
        $headers = array(); 
        $headers[] = 'Content-type:application/json'; 
        $headers[] = 'Authorization:LC apiKey=QidCWRGQ%2BHsdzGE6rrBgiw%3D%3D'; 
    
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
        curl_setopt($ch, CURLOPT_POSTFIELDS,"text=Bonjour&from=fra&to=eng"); //Post Fields 
        $server_output = curl_exec ($ch); 
    
        curl_close ($ch); 
    
        print $server_output ;  
    

    Я получаю сообщение об ошибке, указывающее

    Error parsing json at column:6 line:1 offset:-1 
    

    Вот рабочий Curl запрос

    curl -X POST -H "Content-type: application/json" -H "Authorization: LC apiKey=QidCWRGQ%2BHsdzGE6rrBgiw%3D%3D" -d '{"text":"Bonjour", "from" : "fra", "to" : "eng"}' https://lc-api.sdl.com/translate 
    

    ответ

    2

    Попробуйте, как показано ниже:

    <?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"https://lc-api.sdl.com/translate"); 
    $headers = array(); 
    $headers[] = 'Content-type:application/json'; 
    $headers[] = 'Authorization:LC apiKey=QidCWRGQ%2BHsdzGE6rrBgiw%3D%3D'; 
    
    $data = array("text" => "Bonjour", "from" => "fra", "to" => "eng"); 
    $data_string = json_encode($data); 
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string); //Post Fields 
    $server_output = curl_exec ($ch); 
    
    curl_close ($ch); 
    
    print $server_output ; 
    ?> 
    

    Почтовые поля в формате json_encode.

    +0

    Я получаю ту же ошибку, даже после того, как я изменил его – user2800040

    +0

    я получил '{ "partialTranslation": ложные, "от":" Фра "," to ":" eng "," wordCount ": 1," charCount ": 7," translation ":" Hello "}' result. Является ли этот результат согласно вашему требованию? Очистите кеш браузера, а затем проверьте. – AnkiiG

    +0

    Да, ankit это желаемый результат – user2800040

    0

    добавить:

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    

    полный код:

    <?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"https://lc-api.sdl.com/translate"); 
    $headers = array(); 
    $headers[] = 'Content-type:application/json'; 
    $headers[] = 'Authorization:LC apiKey=QidCWRGQ%2BHsdzGE6rrBgiw%3D%3D'; 
    
    $data = array("text" => "Bonjour", "from" => "fra", "to" => "eng"); 
    $data_string = json_encode($data); 
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string); //Post Fields 
    $server_output = curl_exec ($ch); 
    
    curl_close ($ch); 
    
    var_dump($server_output); 
    ?> 
    
    Смежные вопросы