Alamofire.request(.GET, "url").authenticate(user: "", password: "").responseJSON() {
(request, response, json, error) in
println(error)
println(json)
}
Este é o meu pedido com Alamofire, para um determinado pedido às vezes funciona, mas às vezes recebo:
Optional(Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x78e74b80 {NSDebugDescription=Invalid value around character 0.})
Eu li que isso pode ser devido a JSON inválido, mas a resposta é uma string json estática que validei no validador JSON como válida. Ele contém caracteres å ä ö e algum HTML.
Por que às vezes recebo esse erro?
responseJSON() { ... }
bloco e substituir por.responseString { _, _, s, _ in println(s) }
. Isso permite que você veja o json que é retornado para procurar qualquer texto estranho que o tornaria incomparável porresponseJSON
Respostas:
Eu também enfrentei o mesmo problema. Eu tentei em
responseString
vez deresponseJSON
e funcionou. Eu acho que este é um bug emAlamofire
usá-lo comdjango
.fonte
Recebi o mesmo erro ao carregar a imagem no formulário de várias partes no Alamofire que estava usando
eu consertei substituindo por
Espero que isso ajude alguém.
fonte
Que isso te ajude
fonte
O mesmo problema aconteceu comigo e acabou sendo um problema do servidor, pois o tipo de conteúdo não foi definido.
Adicionando
Para a cadeia de pedidos resolvido para mim
fonte
No meu caso, o URL do meu servidor estava incorreto. Verifique o URL do seu servidor !!
fonte
Eu tenho o mesmo erro. Mas encontrei a solução para isso.
NOTA 1: "Não é erro Alarmofire", é por causa de erro do servidor.
NOTA 2: você não precisa alterar "responseJSON" para "responseString".
fonte
Foi assim que consegui resolver o erro Invalid 3840.
O log de erros
Para saber a codificação, tive que percorrer todos os tipos de codificação:
Se a resposta não for um JSON e apenas string na resposta, use responseString
Exemplo : no caso de login / criar token API:
fonte
Resolvi usando isso como cabeçalho:
let header = ["Content-Type": "application/json", "accept": "application/json"]
fonte
No meu caso, havia um extra / na URL.
fonte
Talvez seja tarde demais, mas resolvi esse problema de outra forma não mencionada aqui:
Ao usar
.responseJSON()
, você deve definir o cabeçalho de resposta comcontent-type = application/json
, se não, ele irá travar mesmo se seu corpo for um JSON válido. Então, talvez seu cabeçalho de resposta esteja vazio ou usando outro tipo de conteúdo.Certifique-se de que seu cabeçalho de resposta esteja configurado
content-type = application/json
para.responseJSON()
funcionar corretamente no Alamofire.fonte
Olá pessoal, descobri que era o meu problema: estava chamando o Alamofire através de uma função para autenticar usuários: usei a função "Login do usuário" com os parâmetros que seriam chamados a partir do "corpo" (e-mail: String, senha: String) Isso seria aprovado
meu erro foi exatamente:
opcional (alamofire.aferror.responseserializationfailed (alamofire.aferror.responseserializationfailurereason.jsonserializationfailed (domínio do erro = nscocoaerrordomain code = 3840 "valor inválido em torno do caractere 0." userinfo = {nsdebugdescription = valor inválido em torno do caractere 0
o caractere 0 é a chave aqui: o que significa que a chamada para o "e-mail" não correspondia aos parâmetros: Veja o código abaixo
func loginUser (email: String, password: String, concluído: @escaping downloadComplete) {let lowerCasedEmail = email.lowercased ()
"email" nos parâmetros de função deve corresponder a "email" let ao analisar, então ele funcionará .. Eu não recebi mais o erro ... E o caractere 0 era o "email" no parâmetro "corpo" para a solicitação Alamofire:
Espero que isto ajude
fonte
Estava enviando o tipo impróprio (String) para o servidor nos meus parâmetros (precisava ser um Int).
fonte
O erro foi resolvido após adicionar a codificação: JSONEncoding.default com Alamofire.
fonte
O aplicativo em que trabalhei esta manhã apresentou o mesmo erro. Acreditei ser um erro do lado do servidor, pois não consegui fazer upload de uma imagem de usuário.
No entanto, ao verificar minha API personalizada, percebi que depois de adicionar um certificado SSL ao meu site que não atualizei os URLs api.swift, os dados não conseguiram postar:
Mudei o URL para https: //. Problema resolvido.
fonte
No meu caso, tenho que adicionar esta chave: "Aceitar": "application / json" à minha solicitação de cabeçalho.
Algo assim:
Espero que isso possa ajudar alguém.
fonte
Eu enfrento o mesmo problema e o problema está nos parâmetros.
companyModal.directory_path
é url. é coagido de string para qualquer que cria problemas no lado do servidor. Para resolver esse problema, preciso fornecer um valor padrão que o torna um valor de string.fonte
Provavelmente você tem "/" no final do seu caminho. Se não for um pedido GET, você não deve colocar "/" no final, caso contrário você obterá o erro
fonte
Eu mudei o mimeType de "mov" para "multipart / form-data".
Funcionou para mim .. :)
fonte
Para o meu caso:
Eu esqueci o espaço antes
\
(depoisBearer
)fonte
No meu caso, o erro foi devido a email duplicado. Você pode verificar novamente sua API no carteiro para ver se a resposta está OK ou não.
fonte