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/b97c1eac-3fab-473f-bd45-4a4c9207e84cn%40googlegroups.com.

Reply via email to