Thanks for trying the test code. "Success" is just the name of the dialog. 
"nok" means that the credentials were not correct. Actually, from the 
server logs, it appears to have received a blank email and password.

On Thursday, March 18, 2021 at 4:02:12 PM UTC-4 Steve Hannah wrote:

> I just tried building the test:
>
> Form hi = new Form("Hi World", BoxLayout.y());
> Button test = new Button("Test");
> hi.add(test);
> test.addActionListener(e -> {
>     try {
>
>         URL url = new URL("https://symdesigns.com/php/export.php";);
>
>
>         URL.URLConnection link = url.openConnection();
>         link.setDoOutput(true);
>         link.setDoInput(true);
>         OutputStream os = link.getOutputStream();
>         os.write(("[email protected]\n").getBytes());
>         os.write(("f47ba92cf7\n").getBytes());
>         os.close();
>
>         InputStream is = link.getInputStream();
>         String ans = Util.readToString(is);
>
>         Dialog.show("Success", ans, "OK", null);
>     } catch(Exception err) {
>         Dialog.show("Error", err.toString(), "OK", null);
>         Log.p("URL error");
>         Log.e(err);
>     }
> });
>
> hi.show();
>
>
> Codename One Simulator:  Passed
> Xcode Simulator (running iPhone 6 - iOS 12.1) : Passed
> iPhone 5 - iOS 10.3.3 (actual device) : Passed
>
>
> By "Passed", I mean I get a dialog that says "Success" in the title and "Nok" 
> in the body.
>
>
>
>
> On Thu, Mar 18, 2021 at 11:44 AM Dennis Rogers <[email protected]> wrote:
>
>>
>> The server received empty strings for the email and the password from the 
>> iphone device (but it received the correct strings from the simulator and 
>> the android device). This is very frustrating!
>>
>> I'm not sure what you mean by "chunked requests". Do you mean requests 
>> that have been gziped?
>> On Wednesday, March 17, 2021 at 11:05:55 PM UTC-4 Shai Almog wrote:
>>
>>> I was able to run it and got a NOK from the server. The question is what 
>>> did the server get?
>>> Can your server deal with chunked requests?
>>> gzip?
>>>
>>> On Wednesday, March 17, 2021 at 7:28:48 AM UTC+2 [email protected] 
>>> wrote:
>>>
>>>> No problem!
>>>>
>>>>
>>>> On Tuesday, March 16, 2021 at 11:03:16 PM UTC-4 Shai Almog wrote:
>>>>
>>>>> I'll look into it. It works in the simulator but I have a couple of 
>>>>> issues with my environment so it will take me. a couple of days to 
>>>>> reproduce it on a device.
>>>>>
>>>>> On Tuesday, March 16, 2021 at 11:37:29 PM UTC+2 [email protected] 
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> BTW, It seems to work ok on the android device.
>>>>>> On Tuesday, March 16, 2021 at 5:13:30 PM UTC-4 Dennis Rogers wrote:
>>>>>>
>>>>>>> The URL is wrong. It should be: "
>>>>>>> https://symdesigns.com/php/export.php";. 
>>>>>>> With that change your test code seems to work ok on the simulator 
>>>>>>> (returns ok) but
>>>>>>> on the device it doesn't (returns nok); When I look at the server 
>>>>>>> logs it still seems to receive 
>>>>>>> a blank email and password when run from the device.
>>>>>>> On Monday, March 15, 2021 at 10:40:12 PM UTC-4 Shai Almog wrote:
>>>>>>>
>>>>>>>> I ran this test case but I'm getting an error from the server in 
>>>>>>>> the "success" dialog:
>>>>>>>>
>>>>>>>> Form hi = new Form("Hi World", BoxLayout.y());
>>>>>>>> Button test = new Button("Test");
>>>>>>>> hi.add(test);
>>>>>>>> test.addActionListener(e -> {
>>>>>>>>    try {
>>>>>>>>      URL url = new URL("
>>>>>>>> https://symdesigns.com/symdesigns.com/php/export.php";);
>>>>>>>>      URL.URLConnection link = url.openConnection();
>>>>>>>>      link.setDoOutput(true);
>>>>>>>>      link.setDoInput(true);
>>>>>>>>      OutputStream os = link.getOutputStream();
>>>>>>>>      os.write(("[email protected]\n").getBytes());
>>>>>>>>      os.write(("f47ba92cf7\n").getBytes());
>>>>>>>>      os.close();
>>>>>>>>
>>>>>>>>      InputStream is = link.getInputStream();
>>>>>>>>      String ans = Util.readToString(is);
>>>>>>>>
>>>>>>>>      Dialog.show("Success", ans, "OK", null);
>>>>>>>>    } catch(Exception err) {
>>>>>>>>      Dialog.show("Error", err.toString(), "OK", null);
>>>>>>>>      Log.p("URL error");
>>>>>>>>      Log.e(err);
>>>>>>>>    }
>>>>>>>> });
>>>>>>>>
>>>>>>>> hi.show();
>>>>>>>>
>>>>>>>> On Monday, March 15, 2021 at 4:04:23 PM UTC+2 [email protected] 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> "f47ba92cf7" is the hashed password i.e.
>>>>>>>>>
>>>>>>>>> "f47ba92cf7" = getHash("test2.xcom"+"pw2")
>>>>>>>>>
>>>>>>>>> The following is the getHash code I'm using:
>>>>>>>>>
>>>>>>>>> static String getHash(String str) {
>>>>>>>>> return dumpBytes(MD5.computeMD5(str.getBytes())).substring(0,10);
>>>>>>>>> }
>>>>>>>>> public static String dumpBytes(byte[] buffer) {
>>>>>>>>> if (buffer == null) {
>>>>>>>>> return "";
>>>>>>>>> }
>>>>>>>>> StringBuilder sb = new StringBuilder();
>>>>>>>>> sb.setLength(0);
>>>>>>>>> for (int i = 0; i < buffer.length; i++) {
>>>>>>>>> sb.append((char) (HEX_CHAR[(buffer[i] & 0x00F0) >> 4]))
>>>>>>>>> .append((char) (HEX_CHAR[buffer[i] & 0x000F]));
>>>>>>>>> }
>>>>>>>>> return sb.toString();
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> BTW What time zone are you in?
>>>>>>>>>
>>>>>>>>> -Dennis
>>>>>>>>> On Sunday, March 14, 2021 at 10:08:01 PM UTC-4 Shai Almog wrote:
>>>>>>>>>
>>>>>>>>>> Thanks!
>>>>>>>>>> I'm trying to reproduce it and noticed I'm still missing the code 
>>>>>>>>>> of getHash.
>>>>>>>>>>
>>>>>>>>>> On Sunday, March 14, 2021 at 5:18:47 PM UTC+2 [email protected] 
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I forgot to tell you. The password "pw2" is hashed to 
>>>>>>>>>>> "f47ba92cf7".
>>>>>>>>>>>
>>>>>>>>>>> On Sunday, March 14, 2021 at 11:12:37 AM UTC-4 Dennis Rogers 
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Sure, You can use "[email protected]" for the email (user id) and 
>>>>>>>>>>>> "pw2" as the password.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Saturday, March 13, 2021 at 10:03:59 PM UTC-5 Shai Almog 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks, is it possible to create a dummy username/password 
>>>>>>>>>>>>> combo with no permissions so we can test this?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Saturday, March 13, 2021 at 2:59:16 PM UTC+2 
>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> The server URL is https://www.symdesigns.com. I have a web 
>>>>>>>>>>>>>> page at symdesigns.com/ShoppingGenie/index.html and the 
>>>>>>>>>>>>>> server php is /symdesigns.com/php/export.php .
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Friday, March 12, 2021 at 11:45:51 PM UTC-5 Shai Almog 
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Interesting, can you expose the server URL so we can run 
>>>>>>>>>>>>>>> this test case and see?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Friday, March 12, 2021 at 10:57:24 PM UTC+2 
>>>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I switched to using Util.readToString() and still no joy on 
>>>>>>>>>>>>>>>> the iphone device.
>>>>>>>>>>>>>>>> The code still works ok on the simulator and on also on a 
>>>>>>>>>>>>>>>> real Android device.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wednesday, March 10, 2021 at 10:28:42 PM UTC-5 Shai 
>>>>>>>>>>>>>>>> Almog wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Try using String ans = Util.readToString(); which might be 
>>>>>>>>>>>>>>>>> better. 
>>>>>>>>>>>>>>>>> Is the code still working on the simulator after the 
>>>>>>>>>>>>>>>>> changes?
>>>>>>>>>>>>>>>>> Is it working on Android?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Wednesday, March 10, 2021 at 5:09:18 PM UTC+2 
>>>>>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Replacing flush() with close() didn't make a difference. 
>>>>>>>>>>>>>>>>>> Here's the code I used without the buffer:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> os = link.getOutputStream();
>>>>>>>>>>>>>>>>>> os.write((nemail + "\n").getBytes());
>>>>>>>>>>>>>>>>>> pwHash = getHash(nemail + npasswd);
>>>>>>>>>>>>>>>>>> os.write((pwHash + "\n").getBytes());
>>>>>>>>>>>>>>>>>> os.close();
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> is = link.getInputStream();
>>>>>>>>>>>>>>>>>> String ans = readLine(is);
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> static String readLine(InputStream stream) {
>>>>>>>>>>>>>>>>>>     byte[] b = new byte[80];
>>>>>>>>>>>>>>>>>>     String s = "";
>>>>>>>>>>>>>>>>>>     int i = 0;
>>>>>>>>>>>>>>>>>>     try {
>>>>>>>>>>>>>>>>>>         b[i] = (byte) stream.read();
>>>>>>>>>>>>>>>>>>         while((b[i] != 10 && (b[i] != 13))) {
>>>>>>>>>>>>>>>>>>             i++;
>>>>>>>>>>>>>>>>>>             b[i] = (byte) stream.read();
>>>>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>>>>         b[i] = 0;
>>>>>>>>>>>>>>>>>>        return new String(b,0,i);
>>>>>>>>>>>>>>>>>>     } catch(IOException e) {
>>>>>>>>>>>>>>>>>>         Log.e(e);
>>>>>>>>>>>>>>>>>>         return null:
>>>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>>> } 
>>>>>>>>>>>>>>>>>> On Tuesday, March 9, 2021 at 10:23:18 PM UTC-5 Shai Almog 
>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Can you include the full code after removing the buffers?
>>>>>>>>>>>>>>>>>>> Also try replacing flush() with close(). That might help.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Tuesday, March 9, 2021 at 3:31:25 PM UTC+2 
>>>>>>>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I'm able to access all the websites on that IP from the 
>>>>>>>>>>>>>>>>>>>> device. I also tried accessing the reply from the server 
>>>>>>>>>>>>>>>>>>>> without the 
>>>>>>>>>>>>>>>>>>>> BufferedInputStream with no luck.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> The certificate I used was one I bought from 
>>>>>>>>>>>>>>>>>>>> bluehost.com who hosts my server.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Monday, March 8, 2021 at 9:51:04 PM UTC-5 Shai Almog 
>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> With valid (not self signed) certificate?
>>>>>>>>>>>>>>>>>>>>> Is it a publicly visible IP accessible from the device?
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Monday, March 8, 2021 at 8:35:52 PM UTC+2 
>>>>>>>>>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Yes, the site is https. To make sure, I tested it 
>>>>>>>>>>>>>>>>>>>>>> using the Qualys ssl checker and I access it with the 
>>>>>>>>>>>>>>>>>>>>>> https:// prefix.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> --Dennis
>>>>>>>>>>>>>>>>>>>>>> On Sunday, March 7, 2021 at 9:42:05 PM UTC-5 Shai 
>>>>>>>>>>>>>>>>>>>>>> Almog wrote:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> I meant the Rest class.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Sorry I neglected to ask something basic. Is the URL 
>>>>>>>>>>>>>>>>>>>>>>> HTTPS?
>>>>>>>>>>>>>>>>>>>>>>> If not iOS will fail by default. You can use this as 
>>>>>>>>>>>>>>>>>>>>>>> a workaround: 
>>>>>>>>>>>>>>>>>>>>>>> https://www.codenameone.com/blog/ios-http-urls.html
>>>>>>>>>>>>>>>>>>>>>>> On Sunday, March 7, 2021 at 7:13:46 PM UTC+2 
>>>>>>>>>>>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Yes I'm using codename1.io.URL.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> On Sunday, March 7, 2021 at 11:46:23 AM UTC-5 
>>>>>>>>>>>>>>>>>>>>>>>> Dennis Rogers wrote:
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> Sorry but I'm still having problems. I tried using 
>>>>>>>>>>>>>>>>>>>>>>>>> unbuffered IO but with the same result (works on the 
>>>>>>>>>>>>>>>>>>>>>>>>> simulator but not on 
>>>>>>>>>>>>>>>>>>>>>>>>> the device). Also the code I sent you was followed by:
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> // Get buffered Input stream
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> is = link.getInputStream();
>>>>>>>>>>>>>>>>>>>>>>>>> BufferedInputStream binp = new 
>>>>>>>>>>>>>>>>>>>>>>>>> BufferedInputStream(is);
>>>>>>>>>>>>>>>>>>>>>>>>> // Get reply
>>>>>>>>>>>>>>>>>>>>>>>>> String ans = readLine(binp);
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> which I think would qualify as asking for a 
>>>>>>>>>>>>>>>>>>>>>>>>> response from the server. BTW this is all being done 
>>>>>>>>>>>>>>>>>>>>>>>>> on a separate thread.
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> I'm learning about the REST protocol but think 
>>>>>>>>>>>>>>>>>>>>>>>>> this should work.
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> -Dennis
>>>>>>>>>>>>>>>>>>>>>>>>> On Saturday, March 6, 2021 at 9:32:02 PM UTC-5 
>>>>>>>>>>>>>>>>>>>>>>>>> Shai Almog wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> Are you using com.codenameone.io.URL ?
>>>>>>>>>>>>>>>>>>>>>>>>>> I would recommend avoiding BufferedOutputStream 
>>>>>>>>>>>>>>>>>>>>>>>>>> in Codename One as all streams are buffered by 
>>>>>>>>>>>>>>>>>>>>>>>>>> default in Codename One.
>>>>>>>>>>>>>>>>>>>>>>>>>> You also need to fetch the result for the request 
>>>>>>>>>>>>>>>>>>>>>>>>>> to finish. It won't happen until you try to get a 
>>>>>>>>>>>>>>>>>>>>>>>>>> response from the server.
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> I would recommend using APIs like the "Rest" API 
>>>>>>>>>>>>>>>>>>>>>>>>>> which is simpler to use and doesn't require 
>>>>>>>>>>>>>>>>>>>>>>>>>> threading.
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> On Saturday, March 6, 2021 at 11:24:53 PM UTC+2 
>>>>>>>>>>>>>>>>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>> I have the following code that I use to send an 
>>>>>>>>>>>>>>>>>>>>>>>>>>> email and password to my server. It works fine on 
>>>>>>>>>>>>>>>>>>>>>>>>>>> the simulator but fails 
>>>>>>>>>>>>>>>>>>>>>>>>>>> on an actual iphone (I receive a blank email and 
>>>>>>>>>>>>>>>>>>>>>>>>>>> password):
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>> try {
>>>>>>>>>>>>>>>>>>>>>>>>>>>     URL url = new URL(*"server address"*);
>>>>>>>>>>>>>>>>>>>>>>>>>>>     link = url.openConnection();
>>>>>>>>>>>>>>>>>>>>>>>>>>>     link.setDoOutput(true);
>>>>>>>>>>>>>>>>>>>>>>>>>>>     link.setDoInput(true);
>>>>>>>>>>>>>>>>>>>>>>>>>>> } catch(URISyntaxException e) {
>>>>>>>>>>>>>>>>>>>>>>>>>>>     Log.p("URL error");
>>>>>>>>>>>>>>>>>>>>>>>>>>>     Log.e(e);
>>>>>>>>>>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>>>>>>>>>>> // Get buffered output stream
>>>>>>>>>>>>>>>>>>>>>>>>>>> os = link.getOutputStream();
>>>>>>>>>>>>>>>>>>>>>>>>>>> BufferedOutputStream bout = new 
>>>>>>>>>>>>>>>>>>>>>>>>>>> BufferedOutputStream(os);
>>>>>>>>>>>>>>>>>>>>>>>>>>> // Send email and hashed Password
>>>>>>>>>>>>>>>>>>>>>>>>>>> bout.write((nemail + "\n").getBytes());
>>>>>>>>>>>>>>>>>>>>>>>>>>> pwHash = getHash(nemail + npasswd);
>>>>>>>>>>>>>>>>>>>>>>>>>>> bout.write((pwHash + "\n").getBytes());
>>>>>>>>>>>>>>>>>>>>>>>>>>> bout.flush();
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks, Dennis
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "CodenameOne Discussions" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/codenameone-discussions/392fb9f1-3c1d-448e-ab79-447a9e30cbc4n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/codenameone-discussions/392fb9f1-3c1d-448e-ab79-447a9e30cbc4n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> Steve Hannah
> Software Developer
> Codename One
> http://www.codenameone.com
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/b0410ccb-88cf-41d7-a1a5-367aecda021fn%40googlegroups.com.

Reply via email to