1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema com java.net.SocketTimeoutException em Aplicação Android com WebService

Estou com problema para recuperar os arquivos de um determinado web service. Já tentei de todas as maneiras, mas não consigo encontrar uma solução para este Timeout, que está ocorrendo na função abaixo.

18542-18855/br.com.agenttia W/System.err: java.net.SocketTimeoutException 18542-18855/br.com.agenttia W/System.err: at java.net.PlainSocketImpl.read(PlainSocketImpl.java:484) 18542-18855/br.com.agenttia W/System.err: at java.net.PlainSocketImpl.-wrap0(PlainSocketImpl.java) 18542-18855/br.com.agenttia W/System.err: at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:108) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:196) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:88) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:179) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:185) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:240) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:264) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:284) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:126) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:457) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:503) 18542-18855/br.com.agenttia W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:481) 18542-18855/br.com.agenttia W/System.err: at br.com.agenttia.infra.Repositorio.recuperaDescontoPromocaoWS(Repositorio.java:3028) 18542-18855/br.com.agenttia W/System.err: at br.com.agenttia.infra.Repositorio.access$6100(Repositorio.java:101) 18542-18855/br.com.agenttia W/System.err: at br.com.agenttia.infra.Repositorio$RecuperaTabelasDescontoPromoTask.doInBackground(Repositorio.java:2946) 18542-18855/br.com.agenttia W/System.err: at br.com.agenttia.infra.Repositorio$RecuperaTabelasDescontoPromoTask.doInBackground(Repositorio.java:2943) 18542-18855/br.com.agenttia W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295) 18542-18855/br.com.agenttia W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 18542-18855/br.com.agenttia W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 18542-18855/br.com.agenttia W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 18542-18855/br.com.agenttia W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 18542-18855/br.com.agenttia W/System.err: at java.lang.Thread.run(Thread.java:818) 18542-18855/br.com.agenttia E/Agenttia: java.net.SocketTimeoutException

Função recuperaDescontoPromocaoWS, na classe Repositório

Aqui é a função que está dando timeout.

```private void recuperaDescontoPromocaoWS(UsuarioDTO usuarioDto) { DescontoPromocaoDAO descontoPromocaoDAO = new DescontoPromocaoDAO(_context); List listDescontoPromocaoDTOs = new ArrayList(); HttpClient client = SingletonHttpClient.getInstace().getHttpClient(); HttpResponse response; JSONObject json = new JSONObject(); HttpPost post = new HttpPost(URL_RECUPERA_DESCONTOPROMOCAO + Integer.parseInt(usuarioDto.getNomeUsuario().trim())); post.setHeader("Content-Type", "application/json; charset=utf-8");

try {

Log.i("Agenttia", "recuperaDescontoPromocaoWS"); StringEntity se = new StringEntity(json.toString()); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); post.setEntity(se); response = client.execute(post); String respStr = EntityUtils.toString(response.getEntity());

if (response != null || respStr.length() > 0) {

JSONArray jsonArray = new JSONArray(respStr);

for (int i = 0; i < jsonArray.length(); i++) {

JSONObject jsonDescontoPromocao = jsonArray.getJSONObject(i);

String Canal = jsonDescontoPromocao.getString("Canal"); String Inicio = jsonDescontoPromocao.getString("Inicio"); String Validade = jsonDescontoPromocao.getString("Validade"); double Desconto = jsonDescontoPromocao.getDouble("Desconto"); String Promocao = jsonDescontoPromocao.getString("PROMOCAO"); int QtdMinima = jsonDescontoPromocao.getInt("QtdMinima"); int id = jsonDescontoPromocao.getInt("ID"); String cliente = jsonDescontoPromocao.getString("Cliente"); String estado = jsonDescontoPromocao.getString("Estado"); listDescontoPromocaoDTOs.add(new DescontoPromocaoDTO(id, Canal, Inicio, Validade, Desconto, Promocao, QtdMinima, cliente, estado)); }

descontoPromocaoDAO.excluiDescontoPromocao(); descontoPromocaoDAO.insereDescontoPromocao(listDescontoPromocaoDTOs);

} } catch (Exception e) { e.printStackTrace(); Log.e("Agenttia", e.toString()); } }```

Classe UsuarioDTO

```public class UsuarioDTO implements Parcelable {

private String nomeUsuario; private String senha; private String nomeCompleto; private String primeiroNome; private String urlImagem; private String uriImagem; private String email; private int nivel; private String emailc; private String emailp;

public UsuarioDTO(String nomeUsuario, String senha, String nomeCompleto, String primeiroNome, String urlImagem, String uriImagem, String email, int nivel, String emailc, String emailp) { super(); this.nomeUsuario = nomeUsuario; this.senha = senha; this.nomeCompleto = nomeCompleto; this.primeiroNome = primeiroNome; this.urlImagem = urlImagem; this.uriImagem = uriImagem; this.email = email; this.nivel = nivel; this.emailc = emailc; this.emailp = emailp; }

// Parcelling part public UsuarioDTO(Parcel in) { String[] data = new String[10];

in.readStringArray(data); this.nomeUsuario = data[0]; this.senha = data[1]; this.nomeCompleto = data[2]; this.primeiroNome = data[3]; this.urlImagem = data[4]; this.uriImagem = data[5]; this.email = data[6]; this.nivel = Integer.parseInt(data[7]); this.emailc = data[8]; this.emailp = data[9];

}

public String getEmailc() { return emailc; }

public void setEmailc(String emailc) { this.emailc = emailc; }

public String getEmailp() { return emailp; }

public void setEmailp(String emailp) { this.emailp = emailp; }

public String getNomeUsuario() { return nomeUsuario; }

public void setNomeUsuario(String nomeUsuario) { this.nomeUsuario = nomeUsuario; }

public String getSenha() { return senha; }

public void setSenha(String senha) { this.senha = senha; }

public String getNomeCompleto() { return nomeCompleto; }

public void setNomeCompleto(String nomeCompleto) { this.nomeCompleto = nomeCompleto; }

public String getPrimeiroNome() { return primeiroNome; }

public void setPrimeiroNome(String primeiroNome) { this.primeiroNome = primeiroNome; }

public String getUrlImagem() { return urlImagem; }

public void setUrlImagem(String urlImagem) { this.urlImagem = urlImagem; }

public String getUriImagem() { return uriImagem; }

public void setUriImagem(String uriImagem) { this.uriImagem = uriImagem; }

public String getEmail() { return email; }

public void setEmail(String email) { this.email = email; }

public int getNivel() { return nivel; }

public void setNivel(int nivel) { this.nivel = nivel; }

public static Parcelable.Creator getCreator() { return CREATOR; }

@Override public void writeToParcel(Parcel dest, int flags) { dest.writeStringArray(new String[] { String.valueOf(this.nomeUsuario), this.senha, this.nomeCompleto, this.primeiroNome, this.urlImagem, this.uriImagem, this.email, String.valueOf(this.nivel), this.emailc, this.emailp }); }

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public UsuarioDTO createFromParcel(Parcel in) { return new UsuarioDTO(in); }

public PedidoDTO[] newArray(int size) { return new PedidoDTO[size]; } };

@Override public int describeContents() { return 0; }

}```

Classe DescontoPromocaoDTO

Este é o domínio.

```public class DescontoPromocaoDTO { private int id; private String Canal; private String Inicio; private String Validade; private double Desconto; private String Promocao; private int QtdMinima; private String Cliente; private String Estado;

public DescontoPromocaoDTO(int ID, String canal, String inicio, String validade, double desconto, String promocao, int qtdMinima, String cliente, String estado) { super(); this.id = ID; this.Canal = canal; this.Inicio = inicio; this.Validade = validade; this.Desconto = desconto; this.Promocao = promocao; this.QtdMinima = qtdMinima; this.setCliente(cliente); this.setEstado(estado); }

public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCanal() { return Canal; } public void setCanal(String canal) { Canal = canal; } public String getInicio() { return Inicio; } public void setInicio(String inicio) { Inicio = inicio; } public String getValidade() { return Validade; } public void setValidade(String validade) { Validade = validade; } public double getDesconto() { return Desconto; } public void setDesconto(double desconto) { Desconto = desconto; } public String getPromocao() { return Promocao; } public void setPromocao(String promocao) { Promocao = promocao; } public int getQtdMinima() { return QtdMinima; } public void setQtdMinima(int qtdMinima) { QtdMinima = qtdMinima; }

public String getEstado() { return Estado; }

public void setEstado(String estado) { Estado = estado; }

public String getCliente() { return Cliente; }

public void setCliente(String cliente) { Cliente = cliente; } }```

Classe DescontoPromocaoDAO

Este é o Controller

```public class DescontoPromocaoDAO {

protected static final String nomeTabela = "tEC_DescontoPromocao"; protected static final int versao = 1; Context context;

public DescontoPromocaoDAO(Context context) { super(); this.context = context; }

public long insereDescontoPromocao(List descontoPromocaoDTOs) {

Log.i("Agenttia", "insereDescontoPromocao"); SQLiteDatabase db = DBHelper.getInstance(context).getWritableDatabase(); long retorno = -1;

for (DescontoPromocaoDTO descontoPromocaoDTO : descontoPromocaoDTOs) { ContentValues values = new ContentValues();

values.put("ID", descontoPromocaoDTO.getId()); values.put("Canal", descontoPromocaoDTO.getCanal()); values.put("Inicio", descontoPromocaoDTO.getInicio()); values.put("Validade", descontoPromocaoDTO.getValidade()); values.put("Desconto", descontoPromocaoDTO.getDesconto()); values.put("Promocao", descontoPromocaoDTO.getPromocao()); values.put("QtdMinima", descontoPromocaoDTO.getQtdMinima()); values.put("Cliente", descontoPromocaoDTO.getCliente()); values.put("Estado", descontoPromocaoDTO.getEstado());

retorno = db.insert(nomeTabela, null, values);

if (retorno == -1) { Log.i("Agenttia", "insereDescontoPromocao -> erro ao inserir Desconto Promoção"); } else { Log.i("Agenttia", "insereDescontoPromocao -> Desconto Promoção inseridos"); } }

return retorno;

}

public void excluiDescontoPromocao() {

Log.i("Agenttia", "excluiDescontoPromocao"); SQLiteDatabase db = DBHelper.getInstance(context).getWritableDatabase(); db.delete(nomeTabela, null, null);

}

public void excluiDescontoAntigo() {

Log.i("Agenttia", "excluiDescontoPromocao"); SQLiteDatabase db = DBHelper.getInstance(context).getWritableDatabase(); db.delete("Desconto", null, null); db.delete("DescontoItens", null, null);

}

}```

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags android java sql json ou faça a sua própria pergunta.