estoy tratando de codificación de una aplicación para android que enviar algunos correos valores a un archivo php alojado en una dedicar servidor y almacenar la matriz resoult

el código es este

   HttpPost httppost;
    DefaultHttpClient httpclient;

    httppost = new HttpPost("http://IP/script.php"); 
    HttpParams param = new BasicHttpParams(); 
    param.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);


  // httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);

    HttpProtocolParams.setContentCharset(param, "UTF-8");

    httpclient = new DefaultHttpClient(param);

    ResponseHandler <String> res=new BasicResponseHandler(); 
    List<NameValuePair> nameValuePairs;

    nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("id","1"));
    nameValuePairs.add(new BasicNameValuePair("api", "1"));


    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
Log.v("1",System.currentTimeMillis()+"");//Log to know the time diff
    String result= httpclient.execute(httppost, res);
Log.v("2",System.currentTimeMillis()+""); // Log to know the time diff

este código de desechos alrededor de 2,5 segundos (en 3G o WiFi) para enviar el post y get justo «ok» de la cadena desde el servidor , incluso con un buen wifi este tiempo se reduce sólo a 2.2 /2.0 segundos

Me encontré con un simple Ajax sendpost script en mi ordenador conectado a internet a través del mismo teléfono y 3G, es dura .300ms a hacer las mismas cosas así ¿Misma conexión, la misma acción, 2 segundos de diferencia ?

///***ACTUALIZACIÓN de

He intentado de nuevo mi script jquery en mi equipo (con un móvil 3G+/HDSPA conection)

el tiempo promedio de respuesta es de aproximadamente 250 ms pero siempre la primera solicitud hasta 1,7 segundos, traté de enviar mensajes con intervalos de 30 segundos y tengo 1.5 segundos de media hora, luego traté de enviar un post con intervalos de 2 segundos, la primera fue de 1.41 s y nexts 252ms

aquí ustedes pueden ver el gráfico: http://i46.tinypic.com/27zjl8n.jpg

Esta misma prueba con el cable de conexión (estándar DSL) ofrece siempre un fijo en el tiempo de respuesta de ~170ms intervalos independientemente (no sólidos argumentos aquí, pero en mi humilde opinión, tal vez el primer intento es ligeramente superior)

Así que hay algo (o mal) afectando gravemente a conexiones móviles en el primer intento, Alguna idea chicos?

  • 2 segundos es más de lo que debería ser más corto que el. He recibido respuestas en milisegundos. No puedo decir qué va mal aquí, sólo que el tiempo debería ser mejor.
  • Habría sido agradable si usted mencionó que el «3G» parte de tu pregunta no tenía sentido, ya que tienes el mismo problema en el WiFi.
  • Configurar el dispositivo para utilizar un servidor proxy para ver lo que realmente está pasando. Utilizar el Violinista en tu PC como servidor proxy.
  • ¿Con qué frecuencia se realiza la llamada a su servicio? La primera vez que la llamada se hizo el dispositivo puede tener para despertar el 3g radios, y esto puede tomar un par de segundos. Cualquier llamada que se hizo poco después de su primera llamada debe ser más rápido.
  • usted parece estar en lo cierto, el primer post tomará aproximadamente 2 a 3 segundos para terminar, pero nexts toma alrededor de 0,800 s, si tengo que esperar 10 segundos entre cada post tarda 3 segundos de nuevo.. o tal vez esto es http keep-alive relacionados?
  • Así que cualquier idea con la nueva actualización de la información?
  • Echa un vistazo a la información que explica cómo los teléfonos se conectan a la red y de cómo esto es diferente de cómo funciona en la WLAN. Lo que estamos viendo es la conexión a la red GSM bajado y tomar algún tiempo para ser re-conectado. developer.att.com/developer/forward.jsp?passedItemId=8100027

InformationsquelleAutor Colas | 2012-09-16

1 Comentario

  1. 7

    Trate de usar esta configuración

    HttpClient httpclient = new DefaultHttpClient();
    HttpParams httpParameters = httpclient.getParams();
    HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT);
    HttpConnectionParams.setSoTimeout(httpParameters, WAIT_RESPONSE_TIMEOUT);
    HttpConnectionParams.setTcpNoDelay(httpParameters, true);

    Este es el javadoc sobre setTcpNoDelay:

    public static void setTcpNoDelay (HttpParams params, boolean value)

    Desde: API de Nivel 1

    Determina si el algoritmo de Nagle es para ser utilizado. El Nagle del
    el algoritmo intenta ahorrar ancho de banda, reduciendo el número de
    los segmentos que se envían. Cuando las aplicaciones se desea disminuir la red
    la latencia y aumentar el rendimiento, se puede desactivar el algoritmo de Nagle
    (que es habilitar TCP_NODELAY). Los datos serán enviados anteriormente, en el costo
    de un aumento en el consumo de ancho de banda.

    Parámetros

    valor true si el el algoritmo de Nagle es que NO se usa (que es habilitar
    TCP_NODELAY), false de lo contrario.

    • Es el enfoque por addking setTcpNoDelay de trabajo ?
    • no para mí 🙁 estoy usando org.apache.httpcomponents:httpclient:4.5.4 y setTcpNoDelay(verdadero) no hace ninguna diferencia. En realidad TcpNoDelay se establece en true de forma predeterminada. No entiendo el por qué de Apache Http Cliente es lo más lento que OkHttp de la biblioteca o de la base de cliente http en libertad con golang

Dejar respuesta

Please enter your comment!
Please enter your name here