1
resposta

Erro para puxar informações da API

O código começou a apresentar esse erro:

requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Traceback:
File "C:\Users\viniv\OneDrive\Área de Trabalho\venv\Lib\site-packages\streamlit\runtime\scriptrunner\exec_code.py", line 88, in exec_func_with_error_handling
    result = func()
             ^^^^^^
File "C:\Users\viniv\OneDrive\Área de Trabalho\venv\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 579, in code_to_exec
    exec(code, module.__dict__)
File "C:\Users\viniv\OneDrive\Área de Trabalho\app.py", line 23, in <module>
    dados = pd.DataFrame.from_dict(response.json())
                                   ^^^^^^^^^^^^^^^
File "C:\Users\viniv\OneDrive\Área de Trabalho\venv\Lib\site-packages\requests\models.py", line 978, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)

O que posso fazer para resolver?

1 resposta

Esse erro ocorre porque o response.json() está tentando decodificar uma resposta vazia ou inválida da API. Aqui estão alguns passos para diagnosticar e corrigir o problema:

  1. Verifique a Resposta da API Antes de chamar response.json(), veja o conteúdo da resposta:

print(response.status_code) # Código HTTP da resposta print(response.text) # Corpo da resposta como texto

Se o status_code for diferente de 200, pode ser que a API tenha retornado um erro.

  1. Verifique se a API está acessível Se a resposta estiver vazia, pode ser que a API esteja fora do ar ou tenha retornado um erro sem corpo. Teste a URL da API no navegador ou com curl/Postman.

  2. Tente .json() Apenas se o Conteúdo For Válido Evite chamar response.json() diretamente. Em vez disso:

try: dados = response.json() except requests.exceptions.JSONDecodeError: print("Erro ao decodificar JSON. Resposta da API:", response.text) dados = None 4. Confirme que a API Retorna JSON Se response.text retornar HTML ou outra estrutura inesperada, pode ser necessário ajustar a requisição, como adicionar cabeçalhos:

headers = {"Accept": "application/json"} response = requests.get(url, headers=headers)