java.lang.illegalargumentexception caractère illégal dans l'url
je veux demander en web service
mon paramètre comme ceci
urlString = http://ip/autodownload/andro.php?key=apps.apk|2|bla.bla.bla
public void getRequest(String Url) {
Toast.makeText(this, "Tambah Data " + Url + " ", Toast.LENGTH_SHORT).show();
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(urlString);
try {
System.out.println("tes");
HttpResponse response = client.execute(request);
Toast.makeText(this,request(response),Toast.LENGTH_SHORT).show();
String res = EntityUtils.toString(response.getEntity());
System.out.println(res);
Update(res);
} catch (Exception ex) {
Toast.makeText(this, "Gagal Konek Server !", Toast.LENGTH_SHORT).show();
}
}
si j'exécute dans le navigateur c'est ok, mais lorsque je l'exécute dans android, c'est l'erreur comme ceci
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): FATAL EXCEPTION: main
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): java.lang.IllegalArgumentException: Illegal character in query at index 67: http://10.234.152.120/autodownload/andro.php?key=DeliverReceipt.apk|2|com.sat.deliver
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at java.net.URI.create(URI.java:970)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at com.sat.deliver.MenuUtama.getRequest(MenuUtama.java:140)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at com.sat.deliver.MenuUtama.requestParam(MenuUtama.java:118)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at com.sat.deliver.MenuUtama.onClick(MenuUtama.java:355)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at android.view.View.performClick(View.java:2408)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at android.view.View$PerformClick.run(View.java:8816)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at android.os.Handler.handleCallback(Handler.java:587)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at android.os.Handler.dispatchMessage(Handler.java:92)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at android.os.Looper.loop(Looper.java:123)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at java.lang.reflect.Method.invokeNative(Native Method)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at java.lang.reflect.Method.invoke(Method.java:521)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-25 10:24:49.862: ERROR/AndroidRuntime(14602): at dalvik.system.NativeStart.main(Native Method)
j'ai essayer avec Encodage, et le remplacement de caractères, mais ce n'est pas de travail
que dois-je faire?merci
*RÉSOLU
- je faire remplacer des caractères dans urlString comme :
urlString+="?key="+appName.trim().replace(".", "%2E")+"|2|".trim().replace("|", "%7C")+packageName.trim().replace(".", "%2E");
et c'est du beau travail 🙂
L'affichage d'un extrait de votre code serait un bon début.
Quelque chose de mal dans votre web-url du service donc s'il vous plaît vérifier.
Quelque chose de mal dans votre web-url du service donc s'il vous plaît vérifier.
OriginalL'auteur akubabas | 2012-10-25
Vous devez vous connecter pour publier un commentaire.
Essayer de codage de Votre URL
OriginalL'auteur AnilPatel
Cochez cette
OriginalL'auteur Ram kiran
Dans mon cas, c'est la variable que j'étais en ajoutant que la cause du problème. Il avait un espace (les espaces). Je l'ai découpée et l'erreur a disparu.
"http://somewebsite.com/somefile?q="+someVariable.trim()
OriginalL'auteur Emastmagy MastMagy
Cela a fonctionné pour moi. Supposons que vous ayez caractère illégal à l'intérieur de votre adresse IP. Puis le convertir en Base64 code et de l'envoyer sur votre serveur.
Par exemple:
vkj
OriginalL'auteur Vinod Joshi