How to access localhost from on android emulator inside a VM? - android

I know the question sounds a bit confusing but here we go.
I am using an Azure VM to develop a cross platform app (Xamarin) and the app needs to utilise a .net core web API.
I am using a Google Emulator that has access to the internet.
What I have tried -
I have tried google emulators default connection 10.0.2.2:"MY WEB API PORT"/swagger. The result I get is "Bad request - invalid hostname"
I have tried a lot more but with no avail.
Any help is much appreciated.

Ok, the problem was that when I ran the Web service on ISS Express from Visual Studio it wasn't running on my local IP address 127.0.0.1:[MY WEB API PORT].
I found this out thanks to #JasonYe-MSFT who told me about the command
netstat -ant
When I ran the command I found that the port that my web app was running on wasn't attached to my local IP instead it was formatted like so
[::]:64339
So in visual studio instead of running the web app using IIS Express, i changed it too the project itself and when i ran the command again, the port now had my local IP address connected to it.
Inside the android emulator, i can now load the web api using AVD default IP address '10.0.2.2'. So the full address is
10.0.2.2:"MY WEB API PORT"/swagger

Related

How to connect to local host of another machine with android emulator

I am developing an app for android (with react-native) which is running in android studio emulator. This app should connect to a server, but I am in the testing phase and I run the server in a localhost port. but the localhost of another machine (which is in the same network that I am)
let's say the (local) IP of the other machine is 172.17.240.223 and the port which the server is running on is 8080
when I type 172.17.240.223:8080 in my browser (laptop browser), I get the response and there is no problem. Even when I type this in my browser in the emulator I get the response, but this won't happen in app. why is that?
More generally, it's not possible to customize the URL and how the bundle gets loaded. This flexibility is useful to have.
check issue on github here
in this case ,you can use testflight for IOS testing and for android just create apk.

Access Chromebook's localhost from Android apps?

I have a Chromebook that I've set up in Developer Mode, with a crouton-installed version of Linux running alongside. Within the Linux crouton, I'm running a simple web server.
My question is whether it's possible to access that server using any Android apps that are also running on that Chromebook?
Android apps have been installable natively on ChromeOS for some time, but everything that I've read says that they run in some kind of sandbox. ChromeOS itself is pretty tight with its firewall rules as well.
Just to get a start, I'm trying to use the Android version of the Chrome browser to load up a page that's running on a web server in the Linux crouton. I've tried localhost,127.0.0.1, and the Chromebook's current IP address.
I followed the instructions at https://developer.android.com/topic/arc/index.html to enable Developer Mode on the Android side and also, I think, loosen up those firewall rules on the ChromeOS side.
Is there some secret sauce that I'm missing? Is this even possible at all?
I had the exact same question and found this:
https://developer.android.com/topic/arc/index.html#network
It seems that in essence there is no IP traffic allowed from local Chrome to the Android web servers..
Update (thanks jlb for the ping)
However, you can run ifconfig in crouton. And then you can access your content via that IP address. I wonder if Firefox takes that shortcut for you..
Leveraging #tomdemuyt's post, his citation source says that android apps will be assigned a private IP address, so you can access local IP traffic, just not with localhost or 127.0.0.1.
For example, from termux execute ifconfig and look for the local IP address. Then run your service, e.g. node from termux, or kWs, any Android app.... and point Chrome to http://<your-local-ip-address>:<your-service-port>
127.0.0.1 and localhost will work from other Android apps, just not Chrome.
The solutions by jlb and tomdemuyt are for accessing a android app from chromeos (i.e. an ftp server)
However, I needed the opposite way (accessing an node server running in the linux virtual environment from android chrome browser) and that was basically the question ChillyPenguin asked for.
I finally solved it:
Start your webserver and ensure that you can access it with localhost (in my case http://localhost:8080
Within the chromeos terminal run
hostname -I
100.115.92.203 (and an ip:v6:adress:...)
(or ip addr show which is more verbose)
Now I was able to access the web server from android chrome with http://100.115.92.203:8080

How to access computer's local host on Android phone?

I'm currently using Android Studio to prototype an Android application. I'm trying to use the Google App Engine Servlet Module to write a prototype backend for my app. I can run the dev server and access the page via localhost:8080. However, I cannot access this address on my physical android phone over the same wifi connection.
I understand that I cannot use the term localhost within the Android's web browser because that does not refer to the computer's instance of localhost. I tried looking up my computer's ipv4 address and using the "ipaddress:8080" to access the page on the phone, but that does not seem to work either for the Servlet Module within Android Studio.
I have an older server application running on Apache Tomcat within Eclipse. When I run that, I am able to utilize the "ipaddress:8080" method to access the page on my android device.
Any ideas as to why this works while the Android Studio Google App Engine Servlet Module dev server fails? Any suggestions as how to resolve this issue would be greatly appreciated!
You can access the localhost in the following way : 10.0.2.2:8080
I realized that the server did not bind to my IP address. I changed configuration settings within Android Studio for my server to use http address "0.0.0.0". It now works.
In my case, I was receiving null for list request after deploying backend (running on Android device). For some reason backend received requests and didn't respond. The fix for me was to re-deploy and create new project, syncing with my android project front-end code. Then as a result my front end was connected to the back-end exactly as described here: https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/HelloEndpoints step 2.3, and two additional fields were generated in my JSON: "kind" and "etag"

How to test my own ASP.NET Web API in localhost:port using android or Windows Phone device (no simulator)

I'm trying to develop my first REST Service using ASP.NET following this guide.
I'd like to test my services in localhost using my android and wp devices without using android and WP simulator (too slow).
Is there a way to do that?
If you deploy the ASP.NET app on IIS, the services will be reachable as long as the phones are connected on the same network (via Wifi for example). Just use the IP adress of the server instead of localhost.
Another idea is to use fiddler's proxy option. (This also assumes you have set up your app in IIS). Check out this article.
This approach is especially useful if you want to test using custom host headers over SSL.
With this approach you can simulate production dns (by altering hosts file on the fiddler host) rather than using IP addresses and machine names from the mobile device.

Android:Socket programming between phone and system

I am trying to write a client server application, in which the client is a android device.
I am not confident on socket programming.
I have written a server side application and a client side that runs on my emulator.
Will the same application work between a real android device?
I have edited your question (once its reviewed it will show up). From what I understand, your question is generic. It works on my emulator, will it work on my device.
The answer is yes. The emulator connects to 10.0.2.2 which redirects to 127.0.0.1 on your host machine right ? This is how you would have got it working.
To get it working from a device you will need to do the following
Load your java server on your real ip address on your desktop
Ensure that your desktop is on the internet and the ip address visible to the internet (open)
Ensure that your android phone points to the public ip address of your desktop.
Now, I know your worry :) open ip address. So, you can use a ec2 (free amazon ubuntu instance), install java on it and run your server as java -jar . From eclipse you can export a jar file (runnable jar file) with lib in your jarfilename_lib path.
You can use spring For android via HTTP request.
Here is an example.
When you have static ip in server you should set that static ip in your actual device.If you are running your app on emulator you must set 10.0.0.2.

Categories

Resources