URL de caracteres ilegales
Aquí está mi código:
HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android"); HttpGet request = new HttpGet(); request.setHeader("Content-Type", "text/plain; charset=utf-8"); Log.d("URL", convertURL(URL)); request.setURI(new URI(URL)); HttpResponse response = client.execute(request); bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer stringBuffer = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator");
No sé qué error en mi URL:
- Android: error con la interacción de fragmentos Interesante
- Java.lang.RuntimeException: falló la toma de imagen
- ¿Cómo puedo hacer que el reproductor de sonido android mediaplayer reproduzca sonido?
- IText crear un documento con tamaños de página desiguales
- Java.lang.IllegalStateException: El hijo especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero
http://localhost/CyborgService/chatservice.php?action=recive_game&nick_sender=mkdarkness&pass=MV030595&date_last=2012-11-18 09:46:37&id_game=1
Ya he utilizado una función para convertir la URL, pero no ha funcionado. Pero, si intento abrir esta URL en mi navegador, se abre correctamente.
Aquí está mi error:
11-18 21:46:37.766: E/GetHttp(823): java.net.URISyntaxException: Illegal character in query at index 127: http://192.168.0.182/CyborgService/chatservice.php?action=recive_game&nick_sender=mkdarkness&pass=MV030595&date_last=2012-11-18 09:46:37&id_game=1
- Google firebase comprueba si el niño existe
- ¿Hay un convertidor de Java 7 a Java 6?
- Error: Error al capturar la instantánea de los archivos de salida de la tarea 'transformClassesWithDexForDebug' durante el cheque actualizado
- Cómo cambiar mediante programación la imagen de fondo de una actividad de Android
- Android Retrofit Base64 @Body
- Cómo enviar datos a la misma aplicación instalada en otro dispositivo android usando wifi
- ¿Cuál es el ciclo de vida de una variable pública estática en Android?
- ¿Qué se entiende por "este" contexto?
Hay un espacio en su URL, en la posición 127. La fecha se genera como "date_last = 2012-11-18 09:46:37", lo que provoca un error al abrir la URL.
Los espacios no se aceptan formalmente en las URL, aunque su navegador lo convertirá felizmente en "% 20" o en "+", ambas representaciones válidas de un espacio en una URL. Deberías escapar de todos los caracteres: puedes reemplazar el espacio con "+" o simplemente pasar la String a través de URLEncoder y terminar con ella.
Para utilizar URLEncoder ver por ejemplo esta pregunta : codificar con URLEncoder sólo los valores de los parámetros, no la URL completa. O utilice uno de los constructores para URI que tienen algunos parámetros, no uno solo. No estás mostrando el código que construye la URL, así que no puedo comentarlo explícitamente. Pero si usted tiene un mapa de parámetros parameterMap
sería algo como:
String url = baseUrl + "?"; for (String key : parameterMap.keys()) { String value = parameterMap.get(key); String encoded = URLEncoder.encode(value, "UTF-8"); url += key + "&" + encoded; }
Otro día podemos hablar de por qué Java requiere para configurar la codificación y luego requiere que la codificación sea "UTF-8", en lugar de simplemente usar "UTF-8" como la codificación por defecto, pero por ahora este código debería hacer el truco .
Hay un carácter de espacio en blanco:
...2012-11-18 09:46:37...
(en el índice 127, al igual que el mensaje de error dice).
Intenta reemplazarlo con %20
Hacer de esta manera que sin duda le ayudará
HttpClient myClient = new DefaultHttpClient(); HttpPost myConnection = new HttpPost("http://192.168.1.2/AndroidApp/SendMessage"); try { //Your parameter should be as.. List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("messageText", msgText)); nameValuePairs.add(new BasicNameValuePair("senderUserInfoId", loginUserInfoId)); //set parameters to ur URL myConnection.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //execute the connection HttpResponse response = myClient.execute(myConnection); } catch (ClientProtocolException e) { //e.printStackTrace(); } catch (IOException e) { //e.printStackTrace(); }
- ¿Cómo obtener la configuración regional?
- ¿Cómo puedo saber si 2 fragmentos tienen una instancia de la misma clase