Visual Studio 2015 CTP5 Android Emulator loopback to localhost? - android

I am using VS 2013 to connect with the new VS2015 Android Emulator. This seems to work now and I can debug, set breakpoints etc which is all fine. (Now, I would use VS2015 but it won't deploy properly -never mind).
I am also developing the server app on my machine and using Fiddler as an http debug aid.. not an uncommon situation I am sure.
The server is running (also under debug in another instance of VS 2013) using IIS Express and I have added bindings to the applicationhost.config so the IISExpress server is visible on my LAN from other PC's and I've checked it is visible.
Try as I might I can not seem to get the Emulator to send the http requests back to my computer.
My javascript uses a servicebase to hold the url:
var serviceBase = 'http://192.168.2.4:64963/'; //'http://169.254.220.177:64963/'; //'http://10.0.2.2:64963/'; //'http://localhost:64963/';
The commented ones show the ones I have tried. None of these works.. the first is the IP of my machine on the LAN, the rest are various ones I have picked up here or the Android dev site.. I have also tried:
http://mymachinename:64963
Because I am bringing both web AND API services from this URL I have also tried a chrome browser on my real android phone (over wifi on my LAN) and this can't get to my dev machine either (where my other pc's can). So I get that it probably can't resolve the names? But really not sure where to go next? I wondered about the Hosts file on my PC but not sure if I can/should set an IP address as a host name? .. any pointers? Thanks, Brett

169.254.80.80 is the localhost loopback.
By going to Additional Tools in the VS emulator for Android (click the >> button on the right hand side) and selecting the Network tab, you will get all the information about the network connectivity.
For the localhost loopback, use the address listed under the Desktop Adapter #2. Desktop Adapter #1 should work as well, which is the IP address of your machine.

I am answering this because I have seen a lot of comments/questions about this topic and need to include some bits that it is hard to fit in the comments.. and I have solved it.
First the solution.. was to delete/replace the vsemu.vhd and vsemu.sdcard.vhd for the emulator with safe copies. This was because in my efforts to fix the problem I assume I had changed some setting in the emulator phone data. Sadly I am not sure what.
However, and this checklist may be useful to someone, before this I was led to it by the fact that because I had web services as well as API from my server URL I was able to test webpage access. This worked on pcs but failed on wifi connected android devices on my network with pc names.. as mentioned in my original question. But it wouldn't work with a numeric IP address either.
I had already added the numeric IP to the applicationhosts.config file of IISExpress, but what I hadn't done, because I thought its on the machine its referring to, was execute the
netsh http add urlacl url=http://192.168.2.1:94693/ user=everyone
command to let it all through.
Once I had done this, I was able to connect using the IP address from a phone, and this led me to discover that the Emulator had obviously got some form of problem. Replacing the VHD's fixed this and I am now communicating.

In case anyone else has this issue using the following IP's worked for me:
IP of the machine
169.254.80.80
However, do remember that VS Android emulator is running in a Hyper-v VM,
So I had to punch a hole in my firewall to allow for my application port to be reached by the emulator.
If your using Web API with visual studio 2015 and VS Android emulator this link helped me out a lot

Use 10.0.2.2, This is the loopback from emulator to your host machine.
See link:
http://developer.android.com/tools/devices/emulator.html

I was having the same issue, but none of the above answers were useful for me.
My BackEnd is a PHP SlimFramework Rest Api.
I decided to change the IP in the auto start of the Slim (was localhost:7888), I tried this: php -S 192.168.43.20:7888, and everything was working fine after I configure the calls to that ip.
I hope this may help someone...

In generic the IP you must consider is the IP of the network you are using/allocated to run the android emulator.
Very raw/rude method of finding it is by going to settings (gear symbol on right panel of emulator, not the one inside) and look for ip address. . Or by opening the ADB Logging window and it's on the top left corner.
Now in command prompt type ipconfig and match the first 3 numbers of IP and that's the network your localhost loopback.
Because in many cases we will have more than one ethernets or virtualbox host only networks are running.
Happy Coding!!

Related

How can a client on a mobile device connect to localhost with a server running on a PC?

I have a big problem because I have a pc with a little amount of RAM and I can't use my RESTlet server on Eclipse and an Android client on Android Studio together... I read on the internet some solutions at my problem but maybe I wrong somethings because it doesn't work. How can I use the localhost (with or without the cable is the same) with my pc (for the server) and my phone (for the client) to debug and use my project?
Check out ngrok. It's a great addition to any developer's toolbox.
This app allows you to make your localhost accessible to the internet through a secure channel.
You'll download a small application for your PC, which will then give you a temporary and random URL, through which you can access the web server on your local machine.
This way, your phone will be able to reach your PC over WiFi, cell data, etc. You just need to have a way to configure the destination URL in your phone app to set it to the URL that ngrok gives you.
Another solution would be to create a Windows VM on any of the Cloud providers (such as AWS, Azure, Google, etc.), remote desktop into that machine, install Eclipse, copy your code and and run your API server there. And then use your own PC to run your Android simulator and point the destination URL to your VM's IP or domain name. This solution would be somewhat more complicated to set up and will require you to move your code around, expose the right ports, install a bunch of software on the VM, etc. Not to mention, this will probably cost you a little bit of money. So for testing and debugging purposes, that ngrok solution should work great.
In your url instead of "localhost" copy and paste your PC ip v4 address.You can get it on Windows from command prompt ipconfig command

How do I connect an Android Emulator to localhost server?

I have an ASP.NET/Azure application running on http://localhost:4617. I would like to debug a REST call made from an Android emulator. Related SO threads seem to indicate that you should use 10.0.2.2. I've tried several variations like http://10.0.2.2:4617, but none seem to work. Any other suggestions?
If I do ping localhost on my machine, it returns Reply from ::1: time<1ms which seems to have something to do with an ipV6 address, but I'm not sure how this is related.
If the local host is running on your desktop than that is the problem.
When you type http://10.0.2.2 it tries to connect to the Android emulator local host.
What you need to do is find your computer IP address (you can use google for it). Then once you have it type that into your android emulator browser and it should work
I was able to figure this out. If you're running an Azure server-emulator, then you need to run Visual Studio with administrator privileges. If you don't, then it will not bind correctly to the local host.

connecting to the loop back (10.0.2.2) on an android / xamarin / VS2015 emulator setup

this old story again.
I cannot get my emulator to speak with my local windows development machine. I know that I need to use 10.0.2.2 as the IP to connect to 127.0.0.1 on my development machine. I have had the thing working one week ago but since then, several reboot and some tinkering later it will not connect.
As simple as putting 10.0.2.2 in the browser (on the emulator) fails. I can connect to the public internet fine in the browser. the BBC and Google work.
It's not a firewall issue as the response is not "actively refused" and I turned it off to no avail.
I am not systems expert and have little interest in systems stuff but I suspect there is "proxy" stuff involved. I have removed the proxy settings which were on my windows machine. I use fiddler a lot and I understand that it affects proxy settings ??
Where do I go now. I fire up an emulator using VS 2015 and it works fine. I can use the browser for public sites. I cannot connect to 10.0.2.2. It just times out.
How do I proceed please clever people?
I find it easier to use fiddler as reverse proxy which makes it easier to access localhost from Android easier: Use Fiddler as a Reverse Proxy
After that you will be able to connect to localhost:8888 and fiddler will redirect request to your local server.

Direction on setting up fiddler and Bluestacks

Does anyone know how to set up fiddler to monitor/sniff traffic from bluestacks? I've seen others mentioning that it can be done, but need some direction on configuring fiddler or configuring bluestacks to get it going. Currently fiddler is returning a message, some tunnel to message. Perhaps I would need to configure the port/proxy for bluestacks. If this is the case, does anyone know how this is to be done or can point me in the right direction?
You can capture Bluestacks traffic using:
Wireshark (problem: we can't see https (SSL) traffic)..
We can use ProxyCap software and setup all BlueStacks executables to work via our Fiddler local proxy. But we have an issue here - We can't import Fiddler Certificate into BlueStacks (at least I didn't found a way yet)..
one possible solution would be to:
KILL BlueStacks processes.
Find BlueStacks Root.fs file (in my case it's located here: c:\ProgramData\BlueStacks\Android)
edit that file using linux tools (it's an image .. we can do fdisk Root.fs to see partitions.. then mout it with loop rw .. and modify.. but that's need more digging).
one important note: we need to find a way to block BlueStacks autoupdates (and discard our changes in Root.fs)
Supposedly, BlueStacks doesn't support proxy settings (https://android.stackexchange.com/questions/27224/how-to-configure-bluestack-appplayer-to-use-proxy-settings-when-connecting-to-ne) which would imply that its traffic would not go through Fiddler.
However, you say "Fiddler is returning a message some tunnel to message" which implies to me that maybe they were incorrect and the traffic is going through Fiddler and the client merely needs to be configured to trust the Fiddler root certificate.
Can you share a screenshot of the Fiddler UI showing the "Tunnel to" in question?
If all you need is to set a browser within Bluestacks proxy, this proxy setting app worked for me:
https://play.google.com/store/apps/details?id=com.lechucksoftware.proxy.proxysettings

Setting proxy to Android Emulator

I'm having a problem to surf internet on my Emulator, wich is targeting Google API8.I followed all the instructions I have read, setting the proxy in MobileNetworks-->APN--->....,etc, and doesn`t work. If I remove the proxy, the browser navigates locally, and if I have the proxy configured it doesn't even navigate locally.
I tested the same coonfiguration on an emulator targeting API16 and did work!!!!(local and on the Internet), so please how can I solve this.Any help will be appreciated.
PD: I tested using -dns-server x.x.x.x too and happens the same.
Emulator uses the internet connection from the host computer where it's installed.
If the host computer doesn't need any special configuration to access internet (proxy, etc.), then your emulator doesn't need it either.
Only if your computer needs a proxy configuration (or other), you will need to replicate it in the emulator.
Regards.

Categories

Resources