How can I access my local REST api from my android device?

Alien :

I have a spring REST api running locally on my computer. I would like to consume this api for android development.

Here is my get request:

public static String sendGet(final String url) {
        StringBuilder result = new StringBuilder();
        HttpURLConnection urlConnection = null;
        try {
            String apiUrl = getAbsoluteUrl(url); // concatenate uri with base url eg: localhost:8080/ + uri
            URL requestUrl = new URL(apiUrl);
            urlConnection = (HttpURLConnection) requestUrl.openConnection();
            urlConnection.connect(); // no connection is made
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            String line;
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            urlConnection.disconnect();
        }
        return result.toString();
    }

I can access my api via my device's browser. However, when I use this same url within the built apk to make the request, no connection is made.

My manifest includes:

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

Side notes:

I am connecting my device to my laptop running the rest api via usb. I am using the WLAN IPv4 address found by calling ipconfig.

Any tips in the right direction would be much appreciated - thanks!

Edit to include chrome browser (on android device) output from local REST api running on my laptop (A GET request to return default guest user information): enter image description here

Alien :

SOLVED if anyone is interested:

I managed to fix this issue by extending the class my original sendGet(final String url) was in as follows HttpClientUsage extends AsyncTask<String, Void, String> more information and a tutorial can be found here: AsyncTask tutorial

I then had to configure my CORS settings on my local REST API as follows:

 cors:
        allowed-origins: "*"
        allowed-methods: GET, PUT, POST, DELETE, OPTIONS
        allowed-headers: "*"
        exposed-headers:
        allow-credentials: true
        max-age: 1800

Thank you all for your help, it is much appreciated.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=452471&siteId=1