Android httpGet problema

Estoy intentando ejecutar el siguiente enlace usando el código siguiente:

class httpget{ HttpGet httpGet=null; public void linkexecute(){ String url="http://<server>/<path>/action=send&msg=new message"; httpGet= new HttpGet(url); // line 1 .... } at line 1 it is giving error "Illegal arguement exception" java.lang.IllegalArgumentException: Illegal character in query at index 77: http://<server>/<path>/sms.json?action=send&msg=new message at java.net.URI.create(URI.java:970) at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75) at com.sms.login.LoginService.sendSms(LoginService.java:143) 

Considerando que no hay error para la siguiente URL que no tiene lagunas en las palabras de "msg ="

 String url="http://<server>/<path>/action=send&msg=newmessage"; 

¿Cómo puedo resolver el problema de la brecha en las palabras en la URL?

Aquí, te doy una función que eliminará todos los caracteres no válidos de la url. Pase su url en esta función y obtendrá una nueva url con cadenas codificadas.

 public static String convertURL(String str) { String url = null; try{ url = new String(str.trim().replace(" ", "%20").replace("&", "%26") .replace(",", "%2c").replace("(", "%28").replace(")", "%29") .replace("!", "%21").replace("=", "%3D").replace("<", "%3C") .replace(">", "%3E").replace("#", "%23").replace("$", "%24") .replace("'", "%27").replace("*", "%2A").replace("-", "%2D") .replace(".", "%2E").replace("/", "%2F").replace(":", "%3A") .replace(";", "%3B").replace("?", "%3F").replace("@", "%40") .replace("[", "%5B").replace("\\", "%5C").replace("]", "%5D") .replace("_", "%5F").replace("`", "%60").replace("{", "%7B") .replace("|", "%7C").replace("}", "%7D")); }catch(Exception e){ e.printStackTrace(); } return url; } 

Definitivamente debe utilizar URLEncoder.encode(String, String)

Creo que el problema es con los parámetros de URL. En lugar de codificar o reemplazar toda la URL, sólo codificar los parámetros como este:

 Url: http://myHost.com/mail.do?address=New York city@&time=12$3; right url:http://myHost.com/mail.do? + UrlEncode(address) + "&" + UrlEncode(time); 

Otro ejemplo es:

 Map<String, String> params = new HashMap<String, String>(); params.put("email", URLEncoder.encode(loginStr)); params.put("pass", URLEncoder.encode(passwStr)); Model.doAuthUser(params, userCallback); 

Loks de Model.doAuthUser como siguiente:

  String url = "http://myHost.com/mail.do"; if (params != null) { url += "?"; Boolean beginAddParams = true; for (Entry<String, String> entryParams : params.entrySet()) { if (!beginAddParams) { url +="&"; } else { beginAddParams = false; } url += entryParams.getKey() + "=" + entryParams.getValue(); } 

Y usa la url donde quieras.

Creo que deberías usar% 20 en lugar del espacio

El URLEncoder no funcionó para mí cuando estaba publicando variables en mi webservice, porque estaba reemplazando todos los parámetros. Acabé usando

 URI uri = new URI("http", "server", "/path", "action=send&msg=newmessage", null); String url = uri.toASCIIString(); 

Y más tarde en analizar mis datos descargados usando httpPost con el httpClient …

 String xml = null; DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); xml = EntityUtils.toString(httpEntity); 

Supongo que el método httpGet funcionará de la misma manera.

  • Obtén el encabezado de HttpResponse en Android
  • Uso de sesiones de PHP con mi aplicación de Android para iniciar sesión
  • Sincronizar el PoolingClientConnectionManager o no
  • Práctica recomendada para gestionar la llamada de error HTTP
  • Recuperación y análisis de datos de iCal a través de HTTP en Android
  • Obtener el código de respuesta de HttpURLConnection en android
  • Android conexión a json / xml api
  • Recepción de datos fragmentados sin fin
  • Llamada de red lanza la excepción de E / S y la conexión rechazada en android no funciona en el dispositivo android
  • Archivo de httpclient para Android: corrupción de datos y problemas de tiempo de espera
  • Descargar archivos grandes desde android, con una recuperación por error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.