android手机登录电脑服务器,android手机访问本地电脑Web服务器

1.android网络编程知识复习

Android的网络编程分为2种:基于http协议的,和基于socket的。Socket一般应用于社交聊天的应用中,这里关联的比较少就不讲了,我们来说说基于HTTP协议的编程。

基本原理 : 它的工作原理特别的简单,就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。

HTTP请求:HttpURLConnection 和 HttpClient

服务器端返回客户端的内容:

1)以HTML代码的形式返回。

2)以XML字符串的形式返回。返回的数据需要通过XML解析(SAX、DOM,Pull,等)器进行解析。

3)以json对象的方式返回。

2. HTTP请求网络数据

HttpClient在API等级22:Android 5.1 Lollipop开始被google废弃

HttpURLConnection 请求网络:

private void getXMLWithHttpURLConnection(){

new Thread(new Runnable() {

@Override

public void run() {

HttpURLConnection urlConnection = null;

try {

Log.e(TAG,"开始请求网络数据...");

URL url = new URL("http://192.168.31.139/people.xml");

//利用HttpURLConnection对象从网络中请求网络数据

urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setRequestMethod("GET"); //设置请求方式GET,POST

//设置连接超时,如果网络不好,Android系统在超过默认时间会收回资源中断操作

urlConnection.setConnectTimeout(8000);

//connection.setReadTimeout(5000); //设置读取超时

if (urlConnection.getResponseCode() != 200) {

//对响应码进行判断,200为成功

throw new RuntimeException("请求url失败");

}

//从Internet获取网页,发送请求,将网页以流的形式读回来

InputStream inputStream = urlConnection.getInputStream();

对输入流进行读取

BufferedReader bufferedReader =

new BufferedReader(new InputStreamReader(inputStream));

String line;

StringBuilder stringBuilder = new StringBuilder();

while ((line = bufferedReader.readLine())!=null){

stringBuilder.append(line);

}

//解析xml,下一节就讲

parseXMLWithPull(stringBuilder.toString());

} catch (Exception e) {

e.printStackTrace();

} finally {

Log.e(TAG,"关闭请求连接。");

if (urlConnection!=null) urlConnection.disconnect();

}

}

}).start();

}

3.解析XML数据

3.1 PULL解析:

在Android上使用XmlPullParser是一中高效率和易维护解析XML的方法 。Android已经在历史上有两个实现这个接口实现类:

(1)KXmlParser,通过XmlPullParserFactory.newPullParser();

(2)ExpatPullParser,通过Xml.newPullParser();

/** * PULL 解析 xml *@param xmlString */

private void parseXMLWithPull(String xmlString){

try {

Log.d(TAG,">>> 开始解析XML...");

//获取XmlPullParser对象

//第一种获取XmlPullParser对象的方式

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

XmlPullParser parser = factory.newPullParser();

//第二种获取XmlPullParser对象的方式

//XmlPullParser parser=Xml.newPullParser();

parser.setInput(new StringReader(xmlString));

int eventType = parser.getEventType();

String name ="姓名";

String age ="年龄";

String sex ="性别";

while (eventType !=XmlPullParser.END_DOCUMENT ){

String nodeName = parser.getName();

switch (eventType){

//开始读取XML文档 ,对应people节点

case XmlPullParser.START_DOCUMENT:

break;

// 开始解析某个结点,对应name ,age,sex标签

case XmlPullParser.START_TAG:

if ("name".equals(nodeName)) name = parser.nextText();

if ("age".equals(nodeName)) age = parser.nextText();

if ("sex".equals(nodeName)) sex = parser.nextText();

break;

// 完成解析某个结点,对应person节点

case XmlPullParser.END_TAG:

if ("person".equals(nodeName)){

Log.d(TAG,"--name is:" + name);

Log.d(TAG,"--age is:" + age);

Log.d(TAG,"--sex is:" + sex);

}

break;

default:

break;

}

eventType = parser.next();

}

} catch (Exception e) {

e.printStackTrace();

}

}

3.2 建立本地web服务器:

讲了这么多, 到这里才跟标题挂上钩,我也是醉了。

第2节HTTP请求网络数据中的链接 http://192.168.31.139/people.xml 就是在本地建立的一个服务器里的文件,192.168.31.139就是本人的ip地址,people.xml就是我新建的xml 文件。步骤如下:

1.在http://rj.baidu.com/soft/detail/14824.html?ald 下载 Apache HTTP Server软件,下载完成后双击下载文件httpd-2.2.25-win32-x86-no_ssl.msi安装,

0818b9ca8b590ca3270a3433284dd417.png

2.在安装路径…\Apache2.2\htdocs新建people.xml文件

3.在浏览器中输入http://127.0.0.1/people.xml,即可访问到我们刚刚建立的people.xml文件内容

0818b9ca8b590ca3270a3433284dd417.png

4.值得注意的问题

在手机上访问本地电脑web服务器,设置”localhost”或者”127.0.0.1”是不行的,在模拟器上将 ip设置为”10.0.2.2”是可以访问的,但到真机上此方法行不通。

真机连接方法:1.本地电脑搭建的服务器与手机共同连接到一个无线网络下。

2.服务器端需要关闭防火墙。

0818b9ca8b590ca3270a3433284dd417.png

其实在有无线局域网的情况下真机与模拟器连接本地服务端是一样的,唯一区别是真机连接到本地服务器需要关闭防火墙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值