Tenho uma série de dados para inserir no banco de dados. A interface do usuário para inserir os dados não é boa para a entrada em massa, então estou tentando formular um equivalente de linha de comando. Quando examino a solicitação de rede da IU no cromo, vejo uma solicitação PUT de um objeto json. Quando tento replicar o pedido
curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
Eu recebo um erro
curl: (3) [globbing] colchetes aninhados não são suportados na pos X
Onde X é a posição do caractere do primeiro "[".
Como posso colocar um objeto json que inclui uma matriz?
Embora a postagem original tenha outros problemas (ou seja, falta o "-d"), a mensagem de erro é mais genérica.
Isso ocorre porque as chaves {} e os colchetes [] são caracteres globbing especiais em curl. Para desligar esse globbing, use a opção " -g ".
Por exemplo, a seguinte consulta de faceta Solr falhará sem o "-g" para desativar o curl globbing :
curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
fonte
-g
funcionou conforme o esperado. Obrigado @YonikDeve ser mencionado que o
Accept
cabeçalho diz ao servidor algo sobre o que estamos aceitando de volta, enquanto o cabeçalho relevante neste contexto éContent-Type
Geralmente, é aconselhável especificar
Content-Type
comoapplication/json
ao enviar JSON. Para curl, a sintaxe é:Portanto, o comando curl completo será:
fonte
Tente usar aspas simples em vez de aspas duplas junto com -g
O seguinte cenário funcionou para mim
COM
Isso resolveu especialmente meu erro de erro de comando curl: url inválido dois pontos é o primeiro caracter
fonte
A única coisa que ajudou foi usar um arquivo JSON em vez do corpo de texto json. Baseado em Como enviar conteúdo de arquivo como entidade corporal usando cURL
fonte