# Problems receiveing HTTP on Android with loadstrings

**URL:** <https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387>\
**Category:** Processing for Android\
**Created:** [March 17, 2019, 5:21pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387 "2019-03-17T17:21:47Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![dafsoield12](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@dafsoield12](https://discourse.processing.org/u/dafsoield12)\
**Post date:** [March 17, 2019, 5:21pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/1 "2019-03-17T17:21:47Z")

</div>

Hi,  
I have set up on my Adruino ESP32 a AccessPoint. It works and will receive informations over the browser on my android. For example:

192.168.4.1/red=on

Will turn on the red LED on my ardunio. Now I want to send ColorInfomations over this connection. Therfore I have a Color-Picker on my Android and a Servo which can be controlled over the app.

This is the code:

* * *

```auto
void setup() {
  size(540, 960);
  frameRate(10);
  servoPlusButton = new Button("servo +", width+10);
  servoPlusButton.setAction(new ServoPlusAction());
  servoMinusButton = new Button("servo -", width+190);
  servoMinusButton.setAction(new ServoMinusAction());
  colorPicker = new ColorPicker();
  colorPicker.setImage("colorwheel.png");
  colorPicker.setAction(new ColorChangeAction());
}
// -------------------------------------------------- 
void draw() {
  background(red, green, blue);
  servoPlusButton.draw();
  servoMinusButton.draw();
  colorPicker.draw();
  showValue(servo, "Servo", width+100);
}
// -------------------------------------------------- 
void mousePressed() {
  servoPlusButton.update();
  servoMinusButton.update();
  colorPicker.update();
}
void showValue(float val, String label, int yPos) {
  fill(255);
    rect(0, yPos, width, 80);
    fill(0);
    textSize(30);
    textAlign(CENTER, CENTER);
    text(label + ": " +val, 0, yPos, width, 80);
}
// -------------------------------------------------- 
void sendValues() {
  try {
    loadStrings("http://" + ip 
    + "/red/" + red 
    + "/green/" + green 
    + "/blue/" + blue
    + "/servo/" + servo);
  } 
  catch (Exception e) {}
}

```

* * *

void sendValues should sent the parameters to my arduino but the app dont.  
In my browser on Android it works.

Can you help me?

---

<div class="post-metadata">

**Author:** ![kll](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/kll/32/964_2.png) [@kll](https://discourse.processing.org/u/kll)\
**Post date:** [March 18, 2019, 1:02am UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/2 "2019-03-18T01:02:59Z")

</div>

hi,  
the title looks like you want send to android ( not from ),  
but in the text you suggest you talk to a local web server ESP32 AP mode

where is the servo connected?

the code can not be complete, any libraries??

on the first look i can not see where you call

```auto
sendValues()

```

just for a diagnostic it could help to first build the string, print it  
and then send it.

```auto
String send = “http://” + ip
+ “/red/” + red
+ “/green/” + green
+ “/blue/” + blue
+ “/servo/” + servo;
println(send);
loadStrings(send);

```

you explain you want send

> 192.168.4.1/red=on

but send

> [http://192.168.4.1/red/255/green/255/blue/255/servo/123](http://192.168.4.1/red/255/green/255/blue/255/servo/123)

that might be difficult to HTTP GET split

for develop i would not go the long way to make a android app,  
just a 5 line processing code on the PC  
to talk to the ESP

* * *

pls also repair above code posting and use the

```auto
</> code formatter

```

---

<div class="post-metadata">

**Author:** ![dafsoield12](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@dafsoield12](https://discourse.processing.org/u/dafsoield12)\
**Post date:** [March 18, 2019, 12:56pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/3 "2019-03-18T12:56:58Z")

</div>

Thank you.

I want to send from android to my ESP32 AP. The servo is to the arduino connected. Ther were no libraries.

Yes, the code is from the Make-Magazin and the arduino part should use a wifi router. I changed the code for the arduino part to be a access point. This works.

The app send:  
[http://192.168.4.1/red/255/green/255/blue/255/servo/123](http://192.168.4.1/red/255/green/255/blue/255/servo/123)

but in the serial monitor of the arduino ide nothing would be received. If i post the link in the browser on android, I receive it in the serial monitor. So I thought the app wont send anything.

---

<div class="post-metadata">

**Author:** ![kll](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/kll/32/964_2.png) [@kll](https://discourse.processing.org/u/kll)\
**Post date:** [March 18, 2019, 1:32pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/4 "2019-03-18T13:32:17Z")

</div>

pls. again:  
-a- where you call that

```auto
sendValues();

```

from?  
-b- did you try my idea with the make String send  
and print it first ( so you see the send is attempted and the string is good.  
-c- i not see where any of that 4 variables are defined,  
can you test first with a fix string “send”  
make sure “ip” is a string and not a tuple  
-d- just to be sure the loadStrings works better use the correct syntax:

```auto
    println("string: "+send);
    String[] lines = loadStrings(send);
    println("return:");
    println(lines);

```

---

<div class="post-metadata">

**Author:** ![dafsoield12](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@dafsoield12](https://discourse.processing.org/u/dafsoield12)\
**Post date:** [March 18, 2019, 2:06pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/5 "2019-03-18T14:06:07Z")

</div>

OK, sorry I forgott the code.

```auto
abstract class Action {
  abstract void go();
}
// --------------------------------------------------
class ServoPlusAction extends Action {
  void go() {
    servo = constrain(servo+5, 0, 180);
    thread("sendValues");
  }
}

class ServoMinusAction extends Action {
  void go() {
    servo = constrain(servo-5, 0, 180);
    thread("sendValues");
  }
}
// --------------------------------------------------
class ColorChangeAction extends Action {
  void go() {
    thread("sendValues");
  }
}

class Button {
  String label;
  int yPos, ySize = 80;
  Action action;
// --------------------------------------------------   
  Button(String label, int yPos) {
    this.label = label;
    this.yPos = yPos;
  }
// --------------------------------------------------   
  void setAction(Action action) {
    this.action = action;
  }
// --------------------------------------------------   
  void update() { 
    if (mouseInside()) {
      action.go();
    }
  }
 
  boolean mouseInside() { 
    return mouseX > 0
      && mouseX < width
      && mouseY > yPos
      && mouseY < yPos + ySize;
  }
// --------------------------------------------------   
  void draw() {
    fill(255);
    rect(0, yPos, width, ySize);
    fill(0);
    textSize(30);
    textAlign(CENTER, CENTER);
    text(label, 0, yPos, width, ySize);
  }
}

class ColorPicker {
  PImage img;
  int x, y;
  Action action;
// --------------------------------------------------  
  void setImage(String path) {
    img = loadImage(path);
  }
// --------------------------------------------------  
  void setAction(Action action) {
    this.action = action;
  }
// --------------------------------------------------  
  void update() {
    if(mouseInside()) {
    loadPixels(); 
    color c = pixels[mouseY * width + mouseX]; 
    x = mouseX;
    y = mouseY;
    red = red(c); 
    green = green(c);
    blue = blue(c);
    action.go(); 
    }
  }
 
  boolean mouseInside() { 
    return mouseX < width
      && mouseY < width;
  }
// --------------------------------------------------  
  void draw() {
    image(img, 0, 0, width, width);
    ellipseMode(CENTER);
    fill(red, green, blue);
    ellipse(x,y,20,20);
  }
}

```

In Processing they were parts of the project.

---

<div class="post-metadata">

**Author:** ![dafsoield12](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@dafsoield12](https://discourse.processing.org/u/dafsoield12)\
**Post date:** [March 18, 2019, 2:16pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/6 "2019-03-18T14:16:30Z")

</div>

Thank you your code works.

---

<div class="post-metadata">

**Author:** ![dafsoield12](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@dafsoield12](https://discourse.processing.org/u/dafsoield12)\
**Post date:** [March 18, 2019, 6:18pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/7 "2019-03-18T18:18:59Z")

</div>

Dont work again???

Got the error:

java.net.ConnectException: Connection refused (Connection refused)  
at java.net.PlainSocketImpl.socketConnect(Native Method)  
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)  
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)  
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)  
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)  
at java.net.Socket.connect(Socket.java:589)  
at java.net.Socket.connect(Socket.java:538)  
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)  
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)  
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)  
at sun.net.www.http.HttpClient.(HttpClient.java:242)  
at sun.net.www.http.HttpClient.New(HttpClient.java:339)  
at sun.net.www.http.HttpClient.New(HttpClient.java:357)  
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1202)  
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138)  
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)  
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:966)  
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1546)  
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)  
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)  
at processing.core.PApplet.createInputRaw(PApplet.java:7058)  
at processing.core.PApplet.createInput(PApplet.java:7011)  
at processing.core.PApplet.loadStrings(PApplet.java:7465)  
at farbzeiger.sendValues(farbzeiger.java:61)  
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
at java.lang.reflect.Method.invoke(Method.java:498)  
at processing.core.PApplet.method(PApplet.java:3742)  
at processing.core.PApplet$2.run(PApplet.java:3780)  
The file “[http://192.168.4.1/red/223.0/green/0.0/blue/54.0/servo/0.0](http://192.168.4.1/red/223.0/green/0.0/blue/54.0/servo/0.0)” is missing or inaccessible, make sure the URL is valid or that the file has been added to your sketch and is readable.

---

<div class="post-metadata">

**Author:** ![kll](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/kll/32/964_2.png) [@kll](https://discourse.processing.org/u/kll)\
**Post date:** [March 19, 2019, 12:17am UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/8 "2019-03-19T00:17:56Z")

</div>

does it never work? possibly you send too often?  
because you say when you send one time manually  
via browser it works?

anyhow but now we know the real thing, what that, what you send, looks like,  
and i hate that you send float, does not make sense at all.  
but still the question is what the webserver does with it,  
so now you check again using the browser,  
but give this exact string:  
`http://192.168.4.1/red/223.0/green/0.0/blue/54.0/servo/0.0`

is there any response from the server like “OK” that the URL is understood?  
does it not work but work with sending  
`http://192.168.4.1/red/223/green/0/blue/54/servo/0`

and you must find out how often you send that,  
i not see a restriction on that, so there could be flooding  
as soon you touch mouse…  
because you do the  
action go ( via color picker.update )  
and never check if the variables ( red green blue ) have changed by 1.x  
also the servo looks restricted by 5, it is not, the value is restricted, the sending NOT.

can you link ( or provide ) the full code ( even the ESP32 )

---

<div class="post-metadata">

**Author:** ![dafsoield12](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@dafsoield12](https://discourse.processing.org/u/dafsoield12)\
**Post date:** [March 20, 2019, 6:16pm UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/9 "2019-03-20T18:16:33Z")

</div>

HI,

I did several Tests.

I changed the android app to send only “Hello” anytime. In Procession with JAVA connected from my Mac to the Arduino AccessPoint it works. I got no error in the Processing konsole and the text will be received in the Serial Monitor on my ESP32.

Now I ported the App with Processing to my Android Phone and there it never works. Sending the same Text in Android browser get the result in the Serial Monitor.

Have you got a hint?  
Thank you

---

<div class="post-metadata">

**Author:** ![kfrajer](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/kfrajer/32/196_2.png) [@kfrajer](https://discourse.processing.org/u/kfrajer)\
**Post date:** [May 15, 2019, 7:12am UTC](https://discourse.processing.org/t/problems-receiveing-http-on-android-with-loadstrings/9387/10 "2019-05-15T07:12:19Z")

</div>

I would like to clarify your setup.

- You have arduino unit that is connected to Processing via serial

- You have some code that you can load in a browser. The browser sends the message which is received by a Processing sketch. This sketch delivers the message to the arduino via serial monitor, correct?

- You have also an android app made using Processing. When you send the request using your app, it does not work. This is the issue if I am following the discussion.

Kf
