# Android http request an interne ip adresse funktioniert nicht



## Besset (31. Mai 2021)

Guten Tag,
Aktuell arbeite ich an einer app die eine httprequest mit 2 parametern an ein gerät (esp8266) via ip-adresse in meinem heimnetz senden soll. verwende ich eine öffentliche domain (z.B. https://www.google.com/) funktioniert es. auch wenn ich meine persöhnliche request im browser eingebe klappt es. Beide codes scheinen also in ordnung zu sein. Meine vermutung ist das die app noch eine permission braucht um mit dem lokalen netzwer zu interagieren zu können.

Was mach ich also falsch?

[CODE lang="java" title="mein java code:"]void setPlug(int num, int state) {
        OkHttpClient client = new OkHttpClient();

        String url = "https://192.168.178.62/?num=" + num + "&state=" + state;
        //String url = "https://www.google.com/";

        Request request = new Request.Builder()
                .url(url)
                .build();

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        responso.setText("hat wohl nicht geklappt");
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()) {
                    String res = response.body().string();

                    MainActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            responso.setText(res);
                        }
                    });
                }
            }
        });
    }[/CODE]


----------



## Robertop (1. Jun 2021)

Hallo Besset,

eine zusätzliche Permission für ein internes Netzwerk gibt es soweit ich weiß nicht, das einzige was ich immer brauche, ist die Internt Permission. Und die müsstest du ja haben, wenn google funktioniert.

Hast du ausprobiert, dir die fertige URL aus der Konsole zu kopieren und im Browser aufzurufen, oder hat du die von Hand eingetippt? Vielleicht hat sich da einfach irgendein Fehler eingeschlichen (Vom Gefühl her würde ich sagen, dass dein Heimnetz kein SSL hat und deshalb da nur "http" anstatt "https" stehen muss 😇)


----------



## Besset (1. Jun 2021)

Robert_TP hat gesagt.:


> Hallo Besset,
> 
> eine zusätzliche Permission für ein internes Netzwerk gibt es soweit ich weiß nicht, das einzige was ich immer brauche, ist die Internt Permission. Und die müsstest du ja haben, wenn google funktioniert.
> 
> Hast du ausprobiert, dir die fertige URL aus der Konsole zu kopieren und im Browser aufzurufen, oder hat du die von Hand eingetippt? Vielleicht hat sich da einfach irgendein Fehler eingeschlichen (Vom Gefühl her würde ich sagen, dass dein Heimnetz kein SSL hat und deshalb da nur "http" anstatt "https" stehen muss 😇)


Wie bereits vorher erwähnt klappt es wenn ich die IP in Browser eingebe. Das s hat sich da eingeschlichen als ich die Zeile neu geschrieben hatte nachdem dem ich die google-url auskommentiert hatte. Also am s liegt es leider auch nicht. (Im Browser funktioniert auch mit s).
Aber trotzdem danke


----------



## LimDul (1. Jun 2021)

Eigentlich sollte das Problemlos funktionieren. Deswegen meine Nachfragen, nur zur Sicherheit:
* Browser ist Broweser im Handy gemeint, richtig?
* Das Handy ist zum Zeitpunkt des Tests auch mit dem lokalen Wlan verbunden?


----------



## Besset (1. Jun 2021)

LimDul hat gesagt.:


> Eigentlich sollte das Problemlos funktionieren. Deswegen meine Nachfragen, nur zur Sicherheit:
> * Browser ist Broweser im Handy gemeint, richtig?
> * Das Handy ist zum Zeitpunkt des Tests auch mit dem lokalen Wlan verbunden?


Alles korrekt


----------



## Robertop (1. Jun 2021)

Was genau funktioniert nicht? Kannst du den Stacktrace von der Exception posten?


----------



## spike86 (1. Jun 2021)

Also ich selbst habe ähnliches bereits ausprobiert.

Einmal zu den permissions

```
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

Als zweites ist mir aufgefallen, ob man es im Emulator testet oder auf der echten Hardware kann auch einen Unterschied machen. Lokale anfragen im Netzwerk konnte ich nur auf dem echten Smartphone testen. Im Emulator hat es manchmal einfach nicht funktioniert, kann mir auch nicht erklären, warum dem so war.


----------



## Besset (1. Jun 2021)

Robert_TP hat gesagt.:


> Was genau funktioniert nicht? Kannst du den Stacktrace von der Exception posten?





spike86 hat gesagt.:


> Also ich selbst habe ähnliches bereits ausprobiert.
> 
> Einmal zu den permissions
> 
> ...


Ok hat sich gerade erledigt, als ich soeben mein Pc und androidstudio gestartet habe um das stacktrace zu kopieren hat es einfach so geklappt obwohl ich nix geändert habe.
vielen Dank für die Hilfe


----------



## Besset (1. Jun 2021)

spike86 hat gesagt.:


> Also ich selbst habe ähnliches bereits ausprobiert.
> 
> Einmal zu den permissions
> 
> ...


Bei mir hatte beides nicht geklappt, aber dankeschön.


----------

