Curl Bad Request Enviar Json

  • Autor Autor Prospero
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Prospero

Prospero

Eta
Verificación en dos pasos activada
Hola amigos estoy enviando post a una api, pero solo recibo Bad Request que estoy haciendo mal? alguien puede orientarme?

Esto es lo que le tengo que enviar:
Inserir CODE, HTML ou PHP:
{"product":"CREDITO","client":"onboarding","brand":"MANGO_AR","country":"AR","lead_info":{"tracking_id":null,"adgroup":"onboarding-default","lead_source":"onboarding-default","utm_source":"onboarding-default","utm_medium":"onboarding-default","utm_campaign":"onboarding-default","campaign_type":"onboarding-default","campaign":"onboarding-default","utm_term":"onboarding-default","aff_sub":"onboarding-default","aff_sub2":"onboarding-default","national_id":"onboarding-default"},"fingerprint":{"ip":"181.171.95.74","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36","language":"es-ES","device_memory":8,"timezone_offset":180,"resolution":"[1920,1080]","available_resolution":"[1920,1040]"}}

Yo Probe Opcion 1 y no funciono. asi:

Inserir CODE, HTML ou PHP:
$data = [
        "product" =>
            [
                "brand" => "MANGO_AR",
                "client" => "onboarding",
                "country" => "AR",
              
                "fingerprint" => [
                    "available_resolution" => "[1920,1040]",
                    "device_memory" => "8",
                    "ip" => "181.171.95.74",
                    "language" => "es-ES",
                    "resolution" => "[1920,1080]",
                    "timezone_offset" => "180",
                    "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
                    ],
                  
                    "lead_info" => [
                        "adgroup" => "onboarding-default",
                        "aff_sub" => "onboarding-default",
                        "aff_sub2" => "onboarding-default",
                        "campaign" => "onboarding-default",
                        "campaign_type" => "onboarding-default",
                        "lead_source" => "onboarding-default",
                        "national_id" => "onboarding-default",
                        "tracking_id" => "",
                        "utm_campaign" => "onboarding-default",
                        "utm_medium" => "onboarding-default",
                        "utm_source" => "onboarding-default",
                        "utm_term" => "onboarding-default",
                      
                     ],
                   
                     "product" => "CREDITO",
            ]
          
     

];

La segunda Prueba de envio la hice asi y tampoco:

Inserir CODE, HTML ou PHP:
$data = array("product" =>array (
    "brand" => "MANGO_AR",
                "client" => "onboarding",
                "country" => "AR",
                "fingerprint" =>array (
                    "available_resolution" => "[1920,1040]",
                    "device_memory" => "8",
                    "ip" => "181.171.95.74",
                    "language" => "es-ES",
                    "resolution" => "[1920,1080]",
                    "timezone_offset" => "180",
                    "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
                    ),
                    "lead_info" =>array (
                         "adgroup" => "onboarding-default",
                        "aff_sub" => "onboarding-default",
                        "aff_sub2" => "onboarding-default",
                        "campaign" => "onboarding-default",
                        "campaign_type" => "onboarding-default",
                        "lead_source" => "onboarding-default",
                        "national_id" => "onboarding-default",
                        "tracking_id" => "",
                        "utm_campaign" => "onboarding-default",
                        "utm_medium" => "onboarding-default",
                        "utm_source" => "onboarding-default",
                        "utm_term" => "onboarding-default",
                        ),
                        "product" => "CREDITO",
                        ));

No creo que sea el codigo curl ya que creo hacer bien esa parte:

Inserir CODE, HTML ou PHP:
$payload = json_encode($data);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);


curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));



Espero que alguna alma bondadoza con un buen craneo me tire una mano.. jaja graciiias!
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Hola amigos estoy enviando post a una api, pero solo recibo Bad Request que estoy haciendo mal? alguien puede orientarme?

Esto es lo que le tengo que enviar:
Inserir CODE, HTML ou PHP:
{"product":"CREDITO","client":"onboarding","brand":"MANGO_AR","country":"AR","lead_info":{"tracking_id":null,"adgroup":"onboarding-default","lead_source":"onboarding-default","utm_source":"onboarding-default","utm_medium":"onboarding-default","utm_campaign":"onboarding-default","campaign_type":"onboarding-default","campaign":"onboarding-default","utm_term":"onboarding-default","aff_sub":"onboarding-default","aff_sub2":"onboarding-default","national_id":"onboarding-default"},"fingerprint":{"ip":"181.171.95.74","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36","language":"es-ES","device_memory":8,"timezone_offset":180,"resolution":"[1920,1080]","available_resolution":"[1920,1040]"}}

Yo Probe Opcion 1 y no funciono. asi:

Inserir CODE, HTML ou PHP:
$data = [
        "product" =>
            [
                "brand" => "MANGO_AR",
                "client" => "onboarding",
                "country" => "AR",
              
                "fingerprint" => [
                    "available_resolution" => "[1920,1040]",
                    "device_memory" => "8",
                    "ip" => "181.171.95.74",
                    "language" => "es-ES",
                    "resolution" => "[1920,1080]",
                    "timezone_offset" => "180",
                    "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
                    ],
                  
                    "lead_info" => [
                        "adgroup" => "onboarding-default",
                        "aff_sub" => "onboarding-default",
                        "aff_sub2" => "onboarding-default",
                        "campaign" => "onboarding-default",
                        "campaign_type" => "onboarding-default",
                        "lead_source" => "onboarding-default",
                        "national_id" => "onboarding-default",
                        "tracking_id" => "",
                        "utm_campaign" => "onboarding-default",
                        "utm_medium" => "onboarding-default",
                        "utm_source" => "onboarding-default",
                        "utm_term" => "onboarding-default",
                      
                     ],
                   
                     "product" => "CREDITO",
            ]
          
     

];

La segunda Prueba de envio la hice asi y tampoco:

Inserir CODE, HTML ou PHP:
$data = array("product" =>array (
    "brand" => "MANGO_AR",
                "client" => "onboarding",
                "country" => "AR",
                "fingerprint" =>array (
                    "available_resolution" => "[1920,1040]",
                    "device_memory" => "8",
                    "ip" => "181.171.95.74",
                    "language" => "es-ES",
                    "resolution" => "[1920,1080]",
                    "timezone_offset" => "180",
                    "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
                    ),
                    "lead_info" =>array (
                         "adgroup" => "onboarding-default",
                        "aff_sub" => "onboarding-default",
                        "aff_sub2" => "onboarding-default",
                        "campaign" => "onboarding-default",
                        "campaign_type" => "onboarding-default",
                        "lead_source" => "onboarding-default",
                        "national_id" => "onboarding-default",
                        "tracking_id" => "",
                        "utm_campaign" => "onboarding-default",
                        "utm_medium" => "onboarding-default",
                        "utm_source" => "onboarding-default",
                        "utm_term" => "onboarding-default",
                        ),
                        "product" => "CREDITO",
                        ));

No creo que sea el codigo curl ya que creo hacer bien esa parte:

Inserir CODE, HTML ou PHP:
$payload = json_encode(array("user" => $data));


curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);


curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));



Espero que alguna alma bondadoza con un buen craneo me tire una mano.. jaja graciiias!
Agregaste curl_setopt($ch, CURLOPT_POST, true); ?
 
Amigooo!! si lo agregue recien pero no pasa nada aun sigue con el bad request

Pero estás armando mal el body, tienes la mayor parte de la info dentro de product. Cosa que ese atributo solo lleva "CREDITO". Te muestro un ejemplo como debería ser:

PHP:
$data  = [
    "product" => "CREDITO",
    "brand" => "MANGO_AR",
    "client" => "onboarding",
    "country" => "AR",
    "fingerprint" => [
        "available_resolution" => "[1920,1040]",
        "device_memory" => "8",
        "ip" => "181.171.95.74",
        "language" => "es-ES",
        "resolution" => "[1920,1080]",
        "timezone_offset" => "180",
        "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
    ],
    "lead_info" => [
        "adgroup" => "onboarding-default",
        "aff_sub" => "onboarding-default",
        "aff_sub2" => "onboarding-default",
        "campaign" => "onboarding-default",
        "campaign_type" => "onboarding-default",
        "lead_source" => "onboarding-default",
        "national_id" => "onboarding-default",
        "tracking_id" => null,
        "utm_campaign" => "onboarding-default",
        "utm_medium" => "onboarding-default",
        "utm_source" => "onboarding-default",
        "utm_term" => "onboarding-default",
    ],
];
 
Última edição:
Pero estás armando mal el body, tienes la mayor parte de la info dentro de product. Cosa que ese atributo solo lleva "CREDITO". Te muestro un ejemplo como debería ser:

PHP:
$data  = [
    "product" => "CREDITO",
    "brand" => "MANGO_AR",
    "client" => "onboarding",
    "country" => "AR",
    "fingerprint" => [
        "available_resolution" => "[1920,1040]",
        "device_memory" => "8",
        "ip" => "181.171.95.74",
        "language" => "es-ES",
        "resolution" => "[1920,1080]",
        "timezone_offset" => "180",
        "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
    ],
    "lead_info" => [
        "adgroup" => "onboarding-default",
        "aff_sub" => "onboarding-default",
        "aff_sub2" => "onboarding-default",
        "campaign" => "onboarding-default",
        "campaign_type" => "onboarding-default",
        "lead_source" => "onboarding-default",
        "national_id" => "onboarding-default",
        "tracking_id" => null,
        "utm_campaign" => "onboarding-default",
        "utm_medium" => "onboarding-default",
        "utm_source" => "onboarding-default",
        "utm_term" => "onboarding-default",
    ],
];
1643294868595.webp


use un visor de json me parece que tienes razon voy comprobar pero tu codigo no lo tomo. graciias!
 
Ver o anexo 680752

use un visor de json me parece que tienes razon voy comprobar pero tu codigo no lo tomo. graciias!

Como que no tomo mi código? Te genera algún error? Si es eso debes estar usando una versión de PHP antigua y cambia [] por array()
 
Como que no tomo mi código? Te genera algún error? Si es eso debes estar usando una versión de PHP antigua y cambia [] por array()

eso hice jajaja

Inserir CODE, HTML ou PHP:
$data = array(
                "product" => "CREDITO",
                "brand" => "MANGO_AR",
                "client" => "onboarding",
                "country" => "AR",
                
                "fingerprint" =>array (
                    "available_resolution" => "[1920,1040]",
                    "device_memory" => "8",
                    "ip" => "181.171.95.74",
                    "language" => "es-ES",
                    "resolution" => "[1920,1080]",
                    "timezone_offset" => "180",
                    "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
                    ),
                    
                "lead_info" =>array (
                         "adgroup" => "onboarding-default",
                        "aff_sub" => "onboarding-default",
                        "aff_sub2" => "onboarding-default",
                        "campaign" => "onboarding-default",
                        "campaign_type" => "onboarding-default",
                        "lead_source" => "onboarding-default",
                        "national_id" => "onboarding-default",
                        "tracking_id" => "",
                        "utm_campaign" => "onboarding-default",
                        "utm_medium" => "onboarding-default",
                        "utm_source" => "onboarding-default",
                        "utm_term" => "onboarding-default",
                        )
                        
                );
 
Muestra tu código completo, tal vez sea más fácil ayudarte.
aqui va!

Inserir CODE, HTML ou PHP:
<?php

$url = 'https://api.fintechpeople.io/wenance-api/ar/session';

$data = array(
                "product" => "CREDITO",
                "brand" => "MANGO_AR",
                "client" => "onboarding",
                "country" => "AR",
                
                "fingerprint" =>array (
                    "available_resolution" => "[1920,1040]",
                    "device_memory" => "8",
                    "ip" => "181.171.95.74",
                    "language" => "es-ES",
                    "resolution" => "[1920,1080]",
                    "timezone_offset" => "180",
                    "user_agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
                    ),
                    
                "lead_info" =>array (
                         "adgroup" => "onboarding-default",
                        "aff_sub" => "onboarding-default",
                        "aff_sub2" => "onboarding-default",
                        "campaign" => "onboarding-default",
                        "campaign_type" => "onboarding-default",
                        "lead_source" => "onboarding-default",
                        "national_id" => "onboarding-default",
                        "tracking_id" => "",
                        "utm_campaign" => "onboarding-default",
                        "utm_medium" => "onboarding-default",
                        "utm_source" => "onboarding-default",
                        "utm_term" => "onboarding-default",
                        )
                        
                );






//create a new cURL resource
$ch = curl_init($url);


$payload = json_encode($data);

//attach encoded JSON string to the POST fields
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);

//set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));



//return response instead of outputting
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//execute the POST request
$result = curl_exec($ch);

//close cURL resource
curl_close($ch);

?>
 
No sé por que, siento que te falta api key
 
No sé por que, siento que te falta api key
segun lo que veo no hay apikey primero genera un tipo de session que es lo que estoy trantando de hacer recien con el id de session se puede operar dentro de la api..
 
Si te lanza un 400 bad request es porque, te falta enviar datos requeridos o esta mal formateada. (Json, multiform?).

Otro problema sería que el servidor este respondiendo en http v2.

Te recomiendo que utilices la librería Guzzle, asi te ahorras todos esos problemas con curl, y abstraes las llamadas al API de Mango (Fintech Argentina). Un saludo,
 
usa Guzzle y deja de complicarte tanto con esos problemas
 
te aseguraste que cada atributo del json este correcto?, los nombres a veces influyen
 

Tópicos similares

T
Respostas
0
Visitas
555
themauri01
T
J
Respostas
5
Visitas
3K
___A___J___G___
A
Voltar
Topo