If I send a string with no digits - it works ok.
(java error in grey in the log for not accessing url - but program keeps running.
I don't care for this error since I would need only the generated idn string. don't want to use it for domains.
if I add a number to the string - it crashes.
webview though - gets it correctly (it I try to send the webview to
אראל_הצילו2.com
it converts it well to xn--_2-uldavg1avd2hra.com)
(webview1.url)
[CODE lang="b4x" title="log"]*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
user id : G74IXV5CGJ
** Activity (main) Resume **
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
Url Exists.
Internet Connection OK!
GFP OK.
User Input : אראל_הצילו
IdnString : xn--_-zhcarfxsd2gp
Invalid link: https://
ResponseError. Reason: java.net.UnknownHostException: Unable to resolve host "invalid-url": No address associated with hostname, Response:
java.net.UnknownHostException: Unable to resolve host "invalid-url": No address associated with hostname
Error occurred on line: 695 (Main)
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:131)
at teletag.b4a.main._toace(main.java:1661)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
at anywheresoftware.b4a.debug.Debug.delegate(Debug.java:262)
at teletag.b4a.main._createidn(main.java:1353)
at teletag.b4a.main._goteletag(main.java:1514)
at teletag.b4a.main._btngo_click(main.java:1447)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalArgumentException: Invalid input to toASCII: אראל_הצילו2
at java.net.IDN.toASCII(IDN.java:110)
at java.net.IDN.toASCII(IDN.java:133)
... 34 more
Caused by: The input does not conform to the rules for BiDi code points.. line: 0. preContext: . postContext: ו2
at android.icu.text.StringPrep.prepare(StringPrep.java:558)
at android.icu.impl.IDNA2003.convertToASCII(IDNA2003.java:180)
at android.icu.impl.IDNA2003.convertIDNToASCII(IDNA2003.java:277)
at android.icu.text.IDNA.convertIDNToASCII(IDNA.java:654)
at java.net.IDN.toASCII(IDN.java:108)
... 35 more
Invalid link: https://
--------- beginning of crash
java.lang.RuntimeException: java.net.SocketException: Socket closed
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:175)
at anywheresoftware.b4a.BA$2.run(BA.java:387)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:124)
at java.net.SocketOutputStream.write(SocketOutputStream.java:161)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at anywheresoftware.b4a.shell.ShellConnector.sendControlMessage(ShellConnector.java:62)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:305)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
... 8 more
[/CODE]
in main I call it like this :
B4X:
IdnString = ToACE(TtgString,flag)
Log ("User Input : "&TtgString)
Log ("IdnString : "&IdnString)
and the sub, as for now , looks like this ;
B4X:
Sub ToACE (s As String, flag As Int) As String
Dim jo As JavaObject
jo.InitializeStatic("java.net.IDN")
Return jo.RunMethod("toASCII", Array(s))
End Sub