HTTP java netHTTP URLConnection 1 Get URL URLURL1

  • Slides: 35
Download presentation

HTTP通信 四种常用网络请求方式 Ø java. net包中的HTTP URLConnection类提供两种访问方式 (1) Get方式: 以实体的方式得到由请求URL所指向的资源信息, 参数在请求URL中,要求URL的长度小于1 K。 String path =

HTTP通信 四种常用网络请求方式 Ø java. net包中的HTTP URLConnection类提供两种访问方式 (1) Get方式: 以实体的方式得到由请求URL所指向的资源信息, 参数在请求URL中,要求URL的长度小于1 K。 String path = "http: //reg. 126. com/logins. jsp? id=helloworld&pwd=android"; URL url = new URL(path); Http. URLConnection hu. Conn = (Http. URLConnection)url. open. Connection(); hu. Conn. set. Request. Method(“GET”); hu. Conn. set. Connect. Timeout(5000); Input. Stream istream = hu. Conn. get. Input. Stream(); hu. Conn. disconnect();

HTTP通信 Ø java. net包中的HTTP URLConnection类提供两种访问方式 (2) Post方式:向服务器发送请求时在请求后附加实体,参数附 加在请求后的实体中,对URL的长度没有限制。 URL url = new URL("http: //192.

HTTP通信 Ø java. net包中的HTTP URLConnection类提供两种访问方式 (2) Post方式:向服务器发送请求时在请求后附加实体,参数附 加在请求后的实体中,对URL的长度没有限制。 URL url = new URL("http: //192. 168. 1. 100: 8080/web/Login. Servlet"); Http. URLConnection conn = (Http. URLConnection) url. open. Connection(); conn. set. Connect. Timeout(5000); conn. set. Request. Method("POST"); String data = "username=" + URLEncoder. encode(”me") + "&password=" + URLEncoder. encode(” 666"); conn. set. Request. Property("Content-Type", "application/x-www-form-urlencoded"); conn. set. Request. Property("Content-Length", data. length() + ""); conn. set. Do. Output(true); Output. Stream os = conn. get. Output. Stream(); os. write(data. get. Bytes());

HTTP通信 Ø org. apache. http包中的Http. Get和Http. Post类提供两种访问方式 (1) Http. Get方式 (2) Http. Post方式

HTTP通信 Ø org. apache. http包中的Http. Get和Http. Post类提供两种访问方式 (1) Http. Get方式 (2) Http. Post方式

HTTP通信 Handler消息机制 Ø Message:消息,Handler处理的对象。 Ø Message. Queue:消息队列,将Handler发送过来的Message排 列成先入先出的队列。 Ø Handler:处理者,主要负责发送及处理Message。 send. Message( ) handle.

HTTP通信 Handler消息机制 Ø Message:消息,Handler处理的对象。 Ø Message. Queue:消息队列,将Handler发送过来的Message排 列成先入先出的队列。 Ø Handler:处理者,主要负责发送及处理Message。 send. Message( ) handle. Message( ) Ø Looper:消息循环,持续从Message. Queue中抽取Message并 交给Handler。

Socket通信 Socket基本通信模型

Socket通信 Socket基本通信模型

Wi. Fi介绍 实现的功能主要包括Android Wi. Fi的扫描、连接、信息以及Wi. Fi 需要android-support-V 7支持包。 (1) wifi权限管理 <uses-permission android: name="android. permission.

Wi. Fi介绍 实现的功能主要包括Android Wi. Fi的扫描、连接、信息以及Wi. Fi 需要android-support-V 7支持包。 (1) wifi权限管理 <uses-permission android: name="android. permission. ACCESS_WIFI_STATE"/> <uses-permission android: name="android. permission. CHANGE_WIFI_STATE"/> 注:获取wifi还需要定位权限 <uses-permission android: name="android. permission. ACCESS_FINE_LOCATION" />

Wi. Fi介绍 (2) 实现开关设备Wi. Fi的功能 // 获得Wifi. Manager的实例对象 Wifi. Manager m. Wifi. Manager= (Wifi.

Wi. Fi介绍 (2) 实现开关设备Wi. Fi的功能 // 获得Wifi. Manager的实例对象 Wifi. Manager m. Wifi. Manager= (Wifi. Manager) context. get. Application. Context(). get. System. Service(Context. WIFI_ SERVICE); // 调用方法开启wifi boolean is. Open=m. Wifi. Manager. set. Wifi. Enabled(true); 注:wifi的开启关闭过程是有延时性的,操作时需先判断状态

Wi. Fi介绍 (3) 监听设备Wi. Fi的状态 Wifi. Manager中用enum类型表示当前wifi状态。 名称 � �明 WIFI_STATE_DISABLING 0 wifi正在关� WIFI_STATE_DISABLED

Wi. Fi介绍 (3) 监听设备Wi. Fi的状态 Wifi. Manager中用enum类型表示当前wifi状态。 名称 � �明 WIFI_STATE_DISABLING 0 wifi正在关� WIFI_STATE_DISABLED 1 wifi关� WIFI_STATE_ENABLING 2 wifi正在开启 WIFI_STATE_ENABLED 3 wifi开启 WIFI_STATE_UNKNOW 4 wifi未知 在监听状态时,直接通过Wifi. Manager对象的get. Wifi. State( )方法来获取。

Wi. Fi介绍 (3) 监听设备Wi. Fi的状态 wifi状态的改变会导致广播事件发生。 名 称 � 明 Wifi. Manager. WIFI_STATE_CHANGED_ACTION wifi开关�化通知

Wi. Fi介绍 (3) 监听设备Wi. Fi的状态 wifi状态的改变会导致广播事件发生。 名 称 � 明 Wifi. Manager. WIFI_STATE_CHANGED_ACTION wifi开关�化通知 Wifi. Manager. SCAN_RESULTS_AVAILABLE_ACTION wifi�描�果通知 Wifi. Manager. SUPPLICANT_STATE_CHANGED_ACTION wifi�接�果通知 Wifi. Manager. NETWORK_STATE_CHANGED_ACTION 网�状��化通 知 此时注册Broad. Cast. Receiver接收上述广播,然后进行相应处理即可。

Wi. Fi介绍 (4) 获取扫描Wi. Fi结果 wifi扫描使用到的类是Scan. Result类,每一个被扫描到的wifi的 信息基本都存在这个类的对象之中。 //开启设备扫描wifi的功能 new. Wifi. Manager. start. Scan();

Wi. Fi介绍 (4) 获取扫描Wi. Fi结果 wifi扫描使用到的类是Scan. Result类,每一个被扫描到的wifi的 信息基本都存在这个类的对象之中。 //开启设备扫描wifi的功能 new. Wifi. Manager. start. Scan(); //获取扫描的结果,放置到一个List列表中 List<Scan. Result> s. Results = new. Wifi. Manager. get. Scan. Results(); //遍历List中的对象读取相关的信息 for (Scan. Result : s. Results) { Log. d(TAG, "wifi结果: " + Result. SSID + " RSSI: " + Result. level + " Time:" + System. current. Time. Millis()); }

Wi. Fi介绍 (5) 连接/断开一个Wi. Fi 获取已经在设备上配置过的wifi。 List<Wifi. Configuration> configurations = m. Wifi. Manager. get.

Wi. Fi介绍 (5) 连接/断开一个Wi. Fi 获取已经在设备上配置过的wifi。 List<Wifi. Configuration> configurations = m. Wifi. Manager. get. Configured. Networks(); 返回的结果是一个List列表,存储的对象是Wifi. Configuration, 存储设备之前连接过的所有wifi热点的信息。通过遍历它的实例 来获取wifi热点的信息,其中SSID和network. Id一定是存在的, BSSID,password的值是null。 如何获取当前wifi的连接信息: Wifi. Info info = m. Wifi. Manager. get. Connection. Info();

蓝牙通信协议 示例代码-搜索本地及周边已经配对的蓝牙设备 //创建Bluetooth. Adapter 对象 Bluetooth. Adapter adapter = Bluetooth. Adapter. get. Default. Adapter();

蓝牙通信协议 示例代码-搜索本地及周边已经配对的蓝牙设备 //创建Bluetooth. Adapter 对象 Bluetooth. Adapter adapter = Bluetooth. Adapter. get. Default. Adapter(); //判断适配器Bluetooth. Adapter 是否存在?即当地是否有可用的蓝牙适配器。如果非空,则输出提示信息 if(adapter != null){ System. out. println(“本地拥有蓝牙设备”); //通过调用is. Enabled()判断本地蓝牙适配器是否打开 if(!adapter. is. Enabled()){ //创建一个intent对象启动一个Activity ,提示用户开启蓝牙设备 Intent intent = new Intent(Bluetooth. Adapter. ACTION_REQUEST_ENABLE); start. Activity(intent); } //获取远程蓝牙设备 Set<Bluetooth. Device> devices = adapter. get. Bonded. Devices(); if(devices. size() > 0){ for (Iterator iterator = devices. iterator(); iterator. has. Next(); ) { Bluetooth. Device bluetooth. Device = (Bluetooth. Device) iterator. next(); //输出获取到的蓝牙设备列表 System. out. println(bluetooth. Device. get. Address()); } } } else{ System. out. println(“无可用设备");

蓝牙通信协议 修改本机蓝牙设备的可见性 (1) 将“可检测”勾选上即可,为保护数据安全性,2分钟内 有效 (2) 通过代码修改蓝牙设备的可见性 在Android. Mainfest. xml中声明蓝牙权限 <uses-permission android: name=“android. permission.

蓝牙通信协议 修改本机蓝牙设备的可见性 (1) 将“可检测”勾选上即可,为保护数据安全性,2分钟内 有效 (2) 通过代码修改蓝牙设备的可见性 在Android. Mainfest. xml中声明蓝牙权限 <uses-permission android: name=“android. permission. BLUETOOTH”/> <uses-permission android: name=“android. permission. BLUETOOTH_ADMIN”/>