Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] AlertDialog para erro que vai aparecer quando eu não conseguir acessar o WS

Bom dia, Murilo.


Captura a exceção e trabalha com alertas normalmente, via android.app.AlertDialog.Builder. Ou então via Toast. 
Neste caso, não seria suficiente?

[]s,
Pedro

Em 8 de setembro de 2012 06:17, Murilo Ângelo <muriloangelo10@gmail.com> escreveu:
Gente, eu estou desenvolvendo uma aplicação, e ela vai buscar dados em um WS(WebService)...
Visando o usuario que não vai ter internet, eu queria impedir que ele prossiga com o app. Meu app é simples
o Main tem uma imagem e dois botões, onde ao clicar em qualquer um ele irá no WS pegar os dados para listar.
Como faço para que ao clicar em um botão ele dispare um alert alegando a falta de conexão, e no próprio alert,
um botão "TENTAR" igualmente ao GooglePlay!?

Vou postar um pouco do meu código.

public final String[] get(String url) {


String[] result = new String[2];

HttpGet httpget = new HttpGet(url);

HttpResponse response;


try {

response = HttpClientSingleton.getHttpClientInstace().execute(httpget);

HttpEntity entity = response.getEntity();

if (entity != null) {

result[0] = String.valueOf(response.getStatusLine().getStatusCode());

InputStream instream = entity.getContent();

result[1] = toString(instream);

instream.close();

Log.i("post""Result from post JsonPost : " + result[0] + " : " + result[1]);

}

catch (Exception e) {

Log.e("NGVL""Falha ao acessar Web service", e);

result[0] = "0";

result[1] = "Falha na rede!";

}

return result;

}

Esse é da classe: WebService


public List<Estabelecimento> getListaBar() throws Exception {

String[] resposta = new WebServiceBar().get(URL_WS + "buscarBares");

if (resposta[0].equals("200")) {

Gson gson = new Gson();

ArrayList<Estabelecimento> listaEstabelecimento = new ArrayList<Estabelecimento>();

JsonParser parser = new JsonParser();

    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();

    

    for (int i = 0; i < array.size(); i++) {

     listaEstabelecimento.add(gson.fromJson(array.get(i), Estabelecimento.class));

}

return listaEstabelecimento;

else {

throw new Exception(resposta[1]);

}

}

E esse da classe: EstabelecimentoREST


Quando eu executo o aplicativo com o WS desligado aparece isso:


09-08 06:13:55.944: E/NGVL(2336): Falha ao acessar Web service

09-08 06:13:55.944: E/NGVL(2336): org.apache.http.NoHttpResponseException: The target server failed to respond

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:85)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:179)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:410)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)

09-08 06:13:55.944: E/NGVL(2336):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

09-08 06:13:55.944: E/NGVL(2336):  at resource.WebServiceBar.get(WebServiceBar.java:24)

09-08 06:13:55.944: E/NGVL(2336):  at resource.EstabelecimentoREST.getListaBar(EstabelecimentoREST.java:28)

09-08 06:13:55.944: E/NGVL(2336):  at app.qualquercanto.BarActivity$PageAdapter.instantiateItem(BarActivity.java:150)

09-08 06:13:55.944: E/NGVL(2336):  at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)

09-08 06:13:55.944: E/NGVL(2336):  at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:692)

09-08 06:13:55.944: E/NGVL(2336):  at android.support.v4.view.ViewPager.populate(ViewPager.java:821)

09-08 06:13:55.944: E/NGVL(2336):  at android.support.v4.view.ViewPager.populate(ViewPager.java:772)

09-08 06:13:55.944: E/NGVL(2336):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1234)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.View.measure(View.java:8171)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.View.measure(View.java:8171)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.View.measure(View.java:8171)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.View.measure(View.java:8171)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)

09-08 06:13:55.944: E/NGVL(2336):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.View.measure(View.java:8171)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.ViewRoot.performTraversals(ViewRoot.java:801)

09-08 06:13:55.944: E/NGVL(2336):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)

09-08 06:13:55.944: E/NGVL(2336):  at android.os.Handler.dispatchMessage(Handler.java:99)

09-08 06:13:55.944: E/NGVL(2336):  at android.os.Looper.loop(Looper.java:123)

09-08 06:13:55.944: E/NGVL(2336):  at android.app.ActivityThread.main(ActivityThread.java:4627)

09-08 06:13:55.944: E/NGVL(2336):  at java.lang.reflect.Method.invokeNative(Native Method)

09-08 06:13:55.944: E/NGVL(2336):  at java.lang.reflect.Method.invoke(Method.java:521)

09-08 06:13:55.944: E/NGVL(2336):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

09-08 06:13:55.944: E/NGVL(2336):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

09-08 06:13:55.944: E/NGVL(2336):  at dalvik.system.NativeStart.main(Native Method)


Posso está viajando, mas queria que esse erro não aparecesse, por mais que ele não conectasse com o WS, aparecesse ao menos uma janelinha bonitinha dizendo, que não consegui conectar com o servidor... Alguém ai pode me ajudar?




--
-----------------------------------------------------
Pedro E. Cunha Brigatto
Twitter: @pedrobrigatto, GoogleTalk: pedrobrigatto@gmail.com
-----------------------------------------------------

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário