Italian azzarola, query non digerita da httpclient

ivanomonti

Expert
Licensed User
Longtime User
io qui mi incazzo sempre, buon giorno a tutti e per chi è in vacanza al mare si faccia un bagno anche per me :) veniamo al dunque;

Invio la query e mi viene il problema in fase di compilazione, se non invio la query perfetto ma inutile... dovè il carattere illegale se non il mio fottuto carattere di M. :)

Mi date un occhiata per cortesia.

B4X:
Module_setting.loadListCategory("SELECT category, subcategory FROM `category`")

Sub loadListCategory(Query As String)
   http.Initialize("httpCategory")
  Dim req As HttpRequest
  req.InitializePost2("http://www.cazzvu.eu/blablacazz/cXVlcnlsaWJlcmE=.php?q=" & Query, Query.GetBytes("UTF8"))
  http.Execute(req, 1)
End Sub

B4X:
Installing file.
PackageAdded: package:b4a.example
** Activity (main) Create, isFirst = true **
java.lang.IllegalArgumentException: Illegal character in query at index 61: http://www.ivanomonti.eu/apiweb/cXVlcnlsaWJlcmE=.php?q=SELECT category, subcategory FROM `category`
   at java.net.URI.create(URI.java:727)
   at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:79)
   at anywheresoftware.b4a.http.HttpClientWrapper$HttpUriRequestWrapper.InitializePost2(HttpClientWrapper.java:395)
   at b4a.example.module_setting._loadlistcategory(module_setting.java:265)
   at b4a.example.main._activity_create(main.java:341)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:174)
   at b4a.example.main.afterFirstLayout(main.java:98)
   at b4a.example.main.access$100(main.java:16)
   at b4a.example.main$WaitForLayout.run(main.java:76)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:136)
   at android.app.ActivityThread.main(ActivityThread.java:5103)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
   at dalvik.system.NativeStart.main(Native Method)
 

Picena Informatica

Active Member
Licensed User
Longtime User
"`" (alt 96) è diverso da '
E, comunque, non servono virgolette
"SELECT category, subcategory FROM category"
 

giannimaione

Well-Known Member
Licensed User
Longtime User
hai una TABLE category e due CAMPI category e subcategory?
in accordo con picena ... senza vigolette
 

ivanomonti

Expert
Licensed User
Longtime User
Risolto, non digerisce la parola Select quindi ho cambiato approccio api web :-(
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Potrebbe anche essere che non digerisce gli spazi (molto più probabile), per cui sostituisci gli spazi con il %20
B4X:
http://www.ivanomonti.eu/apiweb/cXVlcnlsaWJlcmE=.php?q=SELECT%20category,%20subcategory%20FROM%20`category`

Se funziona dovrai però implementare una cosa più ampia, cioè dovrai fare il URLencode, che toglie appunto i caratteri non validi dei parametri (ad esempio il carattere &, ?, e via così) e lo codifica nel codice corretto.


Sergio
 
Last edited:

Picena Informatica

Active Member
Licensed User
Longtime User
non passare mai query ma solo parametri.Altrimenti ti possono smontare tutto via web (strutture, dati e magari anche password) con le giuste query.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Per fare l'URLencode puoi utilizzare la funzione EncodeUrl presente nella libreria StringUtils
 

ivanomonti

Expert
Licensed User
Longtime User
infatti ho deciso di farmi una serie di apiweb per evitare lo spargimento di sangue.
 
Top