GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[RESOLVIDO] Erro ao receber json url android SyncHttpClient

java
Tags: #<Tag:0x00007f653e5b58d8>
#1

Boa tarde tudo bem? Estou com um problema que não consegui decifrar, fiz um json que esta em uma url so que ao tentar efetuar a sincronia no android e adicionar em minha tabela, ele da erro, segue trecho do código:

			List<Cliente> c = Cliente.getAllFastState();
			for (Cliente cliList : c) {

			client.get("http://www.galaxyz.com.br/API/android/salestool/connection_amazon_inga/indexTributacao.php?filtro=uf='"+cliList.getUf()+"'", new AsyncHttpResponseHandler() {

				@Override
				public void onSuccess(int arg0, Header[] arg1, byte[] body) {

					try {

						String bodyStr = new String(body);
						Log.d("ERR>", "onSuccess() called with: arg0 = [" + arg0 + "], arg1 = [" + arg1 + "], arg2 = [" + body + "]" + "   [bodyString]  " +bodyStr);

						//JSONArray arr = new JSONArray(new String(body));
						JSONArray arr = new JSONArray(new String(ZipUtil.unzip(body).toByteArray()));

						for(int i=0; i < arr.length(); i++){
							Tributacao ent = new Tributacao(arr.getJSONObject(i));
							//Log.e("ERR>>FORTAX", "getCartegoria...." +ent.getCategoria());
                            //if(ent.getUf().equals("MG") ){ // SINCRONIZAR SOMENTE CLIENTES COM ESTADOS UTILIZADOS EM CLIENTES
							//*ent.setCategoria(arr.getString(Integer.parseInt("categoria")));
							ent.save();
						}

						handler.onFinishOperation(SyncEntity.TRIBUTACAO, true);

					} catch (Exception ex) {
						ex.printStackTrace();
					}

				}

				@Override
				public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
					handler.onFinishOperation(SyncEntity.TRIBUTACAO, false);
				}
			});

		}

Ele da este erro:

java.util.zip.ZipException: incorrect header check

na linha: JSONArray arr = new JSONArray(new String(ZipUtil.unzip(body).toByteArray()));

a pergunta é, como faço isso sem o Zip? Tentei de várias formas e nada, segue a url que esta o json: http://www.galaxyz.com.br/API/android/salestool/connection_amazon_inga/indexTributacao.php?filtro=uf=‘GO’, a idéia do for inicial, e pegar so as UF dos estados selecioados, eu estudei pouco e nem sei se é o correto fazer esta abordagem no Sync, mas ele percorre certinho, e ao printar o “cliList.getUf()” ele mostra e passa para a URL SP por exemplo, traz todas as tributações de SP, e assim sucessivamente, mas não consegui prosseguir com este erro, só este erro. Se puderem me ajudar, agradeço.

0 Likes

#2

Resolvido, era só eu colocar da seguinte forma:

 String bodyStr = new String(body);
 JSONArray arr = new JSONArray(bodyStr);
 for (int i = 0; i < arr.length(); i++) {
 Tributacao ent = new Tributacao(arr.getJSONObject(i));

Grato pessoal, era mais questão de olhar a documentação mesmo, foi mal, mas mesmo assim obrigado.

1 Like