Estou tentando descobrir como POST JSON do Android usando HTTPClient. Estou tentando descobrir isso há um tempo, encontrei muitos exemplos online, mas não consigo fazer nenhum deles funcionar. Acredito que isso seja devido à minha falta de conhecimento em JSON / redes em geral. Eu sei que há muitos exemplos por aí, mas alguém poderia me indicar um tutorial real? Estou procurando um processo passo a passo com código e explicação de por que você executa cada etapa ou o que essa etapa faz. Não precisa ser complicado, basta simples.
Novamente, eu sei que há uma tonelada de exemplos por aí, estou apenas procurando um exemplo com uma explicação do que exatamente está acontecendo e por que está acontecendo dessa maneira.
Se alguém souber de um bom livro Android sobre isso, por favor, me avise.
Obrigado novamente pela ajuda @terrance, aqui está o código que descrevi abaixo
public void shNameVerParams() throws Exception{
String path = //removed
HashMap params = new HashMap();
params.put(new String("Name"), "Value");
params.put(new String("Name"), "Value");
try {
HttpClient.SendHttpPost(path, params);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
fonte
Respostas:
Nesta resposta, estou usando um exemplo postado por Justin Grammens .
Sobre JSON
JSON significa JavaScript Object Notation. Em JavaScript, as propriedades podem ser referenciadas assim
object1.name
e assimobject['name'];
. O exemplo do artigo usa esse bit de JSON.As Partes
Um objeto de fã com e-mail como chave e [email protected] como valor
Portanto, o equivalente do objeto seria
fan.email;
oufan['email'];
. Ambos teriam o mesmo valor de'[email protected]'
.Sobre a solicitação HttpClient
O seguinte é o que nosso autor usou para fazer uma solicitação HttpClient . Não tenho a pretensão de ser um especialista em tudo isso, então, se alguém tiver uma maneira melhor de redigir um pouco da terminologia, fique à vontade.
Mapa
Se você não estiver familiarizado com a
Map
estrutura de dados, dê uma olhada na referência do mapa Java . Resumindo, um mapa é semelhante a um dicionário ou hash.Sinta-se à vontade para comentar qualquer dúvida que surgir sobre este post ou se eu não tiver deixado algo claro ou se não toquei em algo que você ainda está confuso ... etc, o que realmente vier na sua cabeça.
(Vou retirar se Justin Grammens não aprovar. Mas, se não, agradeço a Justin por ser legal quanto a isso.)
Atualizar
Acabei de receber um comentário sobre como usar o código e percebi que havia um erro no tipo de retorno. A assinatura do método foi configurada para retornar uma string, mas neste caso não estava retornando nada. Alterei a assinatura para HttpResponse e irei encaminhá-lo a este link em Getting Response Body of HttpResponse, a variável de caminho é o url e atualizei para corrigir um erro no código.
fonte
getJsonObjectFromMap()
: JSONObject tem um construtor que leva umMap
: developer.android.com/reference/org/json/…Aqui está uma solução alternativa para a resposta de @Terrance. Você pode facilmente terceirizar a conversão. A biblioteca Gson faz um trabalho maravilhoso convertendo várias estruturas de dados em JSON e vice-versa.
Semelhante pode ser feito usando Jackson em vez de Gson. Eu também recomendo dar uma olhada em Retrofit, que esconde muito desse código clichê para você. Para desenvolvedores mais experientes, recomendo experimentar o RxAndroid .
fonte
execute()
e ele falhou, é claroEu recomendo usar esta
HttpURLConnection
vezHttpGet
. ComoHttpGet
já está obsoleto na API Android de nível 22.fonte
Muito código para esta tarefa, verifique esta biblioteca https://github.com/kodart/Httpzoid Is usa GSON internamente e fornece API que funciona com objetos. Todos os detalhes JSON estão ocultos.
fonte
Existem algumas maneiras de estabelecer uma conexão HHTP e buscar dados de um serviço da web RESTFULL. O mais recente é GSON. Mas antes de prosseguir para GSON, você deve ter uma ideia da maneira mais tradicional de criar um cliente HTTP e realizar a comunicação de dados com um servidor remoto. Mencionei os dois métodos para enviar solicitações POST e GET usando HTTPClient.
fonte