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/ff29ee3a-9ed9-4ef5-a255-57a62b98c822n%40googlegroups.com.