Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

API com Headers Content-Type:application/x-www-form-urlencoded

Boa tarde.

Estou precisando de uma ajuda. Preciso consumir uma API. Essa API recebe JSON como parâmetros e retona JSON como resposta. Ela exige que tenha um header Content-Type:application/x-www-form-urlencoded.

Em uma aplicação Web, consigo consumir a API usando Jquery ou até mesmo Python, mas em C# não consigo de jeito nenhum. Sempre retorna erro 400 ou 404. Gostaria de fazer uma console app para acessar a api de tempos em tempos e atualizar um banco. Não quero usar Phyton entende! rs!

Com jquery consigo assim:

var params = {
        "action": {
            "name": "user_login",
            "parameters":  {
                "login_name": login,
                "password": senha
            }
        }
    };

    var token = '';

    $.ajax({
        contentType: 'application/x-www-form-urlencoded',
        crossDomain: true,
        type: "POST",
        url: 'https://api-il.traffilog.com/appengine_3/5E1DCD81-5138-4A35-B271-E33D71FFFFD9/1/json',
        data: JSON.stringify(params),
        success: function (data) {
            token = data.response.properties.session_token;
        },
        error: function (data) {
            alert('Não foi possível obter o token de acesso a API. Favor entrar em contato com o T.I.');
        },
        dataType: 'json',
        async: false
    });

Ex:

Tenho que passar esse JSON para obter o token da API

{
    "action": {
        "name": "user_login",
        "parameters": {
            "login_name": "<<user login name>>",
            "password": "<<user password>>"
        }
    }
}

que me retornaria outro JSON

{
    "response": {
        "properties": {
            "action_name": "user_login",
            "data": [{
                "session_token": "E2AD2F5E8CXXXXXX64",
                "profile_name": "default",
                "user_language": "",
                "application_url": "",
                "map_type": "google"
            }],
            "action_value": "0",
            "description": "",
            "session_token": "E2AD2F5E8CXXXXXX64"
        }
    }
}
2 respostas

Olá Bruno,

como que você tentou fazer no c# para consumir esta API? Você pode me mandar esse código para eu dar uma olhada e ver porque ele não conseguiu consumir um application/x-www-form-urlencoded

solução!

Consegui.

Estava tentando usar um Dictionary passa os dados do json. Usei um StringContent com o JSON passando para o HttpResponse.