以下内容全部或部分转自或参考于网络。
20160731补充,genymotion模拟器链接本地服务器的Android端ip地址为10.0.3.2。
完成以下内容需要安装Apache 服务,安装方法见“Apache(阿帕奇)Web服务器的安装和使用 ”。
在C:\Apache24\htdocs 目录中新建一个test.json 的文件,加入如下JSON 格式的内容
{
"T":[
"T1",
"T2",
"T3",
"T4"
]
}
使用模拟器测试,提示连接失败。
后在《第一行代码——Android》中找到了原因:
因"localhost "或"127.0.0.1"被Android模拟器(AVD)所使用,而“10.0.2.2 “对于模拟器来说就是电脑本机的 IP 地址。
再将原程序中的代码作相应调整后一切正常,完整代码如下:
[Activity(Label = "TestJSON", MainLauncher = true , Icon = "@drawable/icon")]
public class MainActivity : Activity
{
TextView tv;
protected override void OnCreate( Bundle bundle)
{
base.OnCreate(bundle);
SetContentView( Resource.Layout .Main);
tv = FindViewById< TextView>(Resource .Id.textView1);
LoadXamarin();
}
public void LoadXamarin()
{
//测试用,本网址为C:\Apache24\htdocs下的test.json,使用模拟器时必须将localhost或127.0.0.1换成10.0.2.2
string url = "http://10.0.2.2/test.json" ;//"http://localhost/test.json";
//创建一个请求
var httpReq = (HttpWebRequest )HttpWebRequest.Create( new Uri (url));
//获取响应
var httpRes = (HttpWebResponse )httpReq.GetResponse();
//读取响应的字符串
String text = new StreamReader(httpRes.GetResponseStream()).ReadToEnd();
tv.Text = text;
}
}