Android网络编程
2015-08-09 20:46
585 查看
1.服务器和游览器遵循http协议。(http是对socket的再次封装)
2.基于http开发的网络通讯。
3.Android访问网络和Java访问网络的区别,java更底层,android做了更高的封装。
4.Android客户端访问本地的服务器地址为10.0.2.2。
5.使用webView视图显示网页
6.get和post请求,获取数据方式不一样。
get请求,将请求数据放在url中。使用baidu搜索做测试。 不安全
post请求,将请求数据放在socket中进行传输。登录邮箱。 安全
安卓HTTP请求分为两种:
[1]HttpUrlConnection (官方推荐使用)
[2]HttpClient (功能很多,但不方便操作)
安卓和JAVA应用开发少不了要提交HTTP请求,而基本上目前有两个实现方式:HttpUrlConnection(即URL.openConnection)和HttpClient。
1.HttpClient是apache的开源实现,而HttpUrlConnection是安卓标准实现,安卓SDK虽然集成了HttpClinet,但官方支持的却是HttpUrlConnection。
2.HttpUrlConnection直接在系统层面做了缓存策略处理,加快重复请求的速度。
3.安卓开发博客上也强调,2.2以后的安卓都应该用HttpUrlConnection。
4.HttpUrlConnention速度快。
1.HttpGet
[1]联网属于耗时操作,使用异步任务读取互联网数据。
[2]定义URL对象 (注意是URL,存放网址的对象)
[3]URLConnection c = url.openConnection()方法得到互联网连接
[4]InputStream is = connection.getInputStream();
[5]InputStreamReader isr = new InputStreamReader(is, "utf-8");
[6]BufferdeReader br = new BufferedReader(isr);
2.HttpPost
[1]Post和Get的区别,Post请求的数据内容不放在地址中。Get方式通过URL传递数据。
[2]使用HttpURLConnection 得到输出流,将请求的内容写入。
[3]setDoOutput(true) 打开写的权限
[4]setRequestMethod("POST") 设定请求方式为POST
有道词典
http://fanyi.youdao.com/
{
"translation":["中国"],
"basic":{"us-phonetic":"'tʃaɪnə","phonetic":"'tʃaɪnə","uk-phonetic":"'tʃaɪnə","explains":["n. 瓷器","adj. 瓷制的"]},
"query":"china",
"errorCode":0,
"web":[{"value":["中国","中华人民共和国","瓷器"],"key":"China"},{"value":["中国国际航空公司","中国国际航空","中国国航"],"key":"Air China"},{"value":["中国大陆","大陆中国","大陆地区"],"key":"Mainland China"}]
}
Json文件
key-value
key类型: String
value类型:{ } Object类型
[ ] 数组类型
String类型
数值类型(int, float)
[1]JSON文件格式:{"info": {"name":"jack", "age":20, "salary":1000, "爱好":["看电影", "打代码","跑步"]}}
<info>
<name>jack</name>
<age>20<age>
<salary>1000</salary>
<爱好>
<String>看电影</string>
<String>打代码</string>
<String>跑步 </string>
</爱好>
</info>
[2]JSON概念: javaScript对象表示法(JavaScript Object Notation) JSON属于轻量级文本数据交换格式
JSON独立于平台和语言 JSON具有自我描述性,更易理解
类似xml,比xml更小,更快,更易解析
[3]JSON语法: 数据保存在key:value(键值对)
[4]JSON数据类型:JSON的值(value)可以是: 数字(整型和浮点型) 字符串(用双引号) 对象(在花括号中) 数组(在方括号中)
[5]使用java解析JSON文件
JSONObject --- json文件中的Object类型
JSONArray --- json文件中的数组类型
2.基于http开发的网络通讯。
3.Android访问网络和Java访问网络的区别,java更底层,android做了更高的封装。
4.Android客户端访问本地的服务器地址为10.0.2.2。
5.使用webView视图显示网页
6.get和post请求,获取数据方式不一样。
get请求,将请求数据放在url中。使用baidu搜索做测试。 不安全
post请求,将请求数据放在socket中进行传输。登录邮箱。 安全
安卓HTTP请求分为两种:
[1]HttpUrlConnection (官方推荐使用)
[2]HttpClient (功能很多,但不方便操作)
安卓和JAVA应用开发少不了要提交HTTP请求,而基本上目前有两个实现方式:HttpUrlConnection(即URL.openConnection)和HttpClient。
1.HttpClient是apache的开源实现,而HttpUrlConnection是安卓标准实现,安卓SDK虽然集成了HttpClinet,但官方支持的却是HttpUrlConnection。
2.HttpUrlConnection直接在系统层面做了缓存策略处理,加快重复请求的速度。
3.安卓开发博客上也强调,2.2以后的安卓都应该用HttpUrlConnection。
4.HttpUrlConnention速度快。
package com.farsight.httpget; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.TextView; public class Android_35_HttpGetActivity extends Activity implements OnClickListener { EditText et; TextView tv; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button1).setOnClickListener(this); et = (EditText) findViewById(R.id.editText1); tv = (TextView) findViewById(R.id.textView1); } @Override public void onClick(View v) { // TODO Auto-generated method stub String word = et.getText().toString(); new AsyncTask<String, Void, String>() { @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub String explain = ""; try { //网址 URL url = new URL(params[0]); //打开网址,获取URLConnection对象 URLConnection conn = url.openConnection(); //读取从服务器请求的数据 InputStream is = conn.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); //字符串缓冲 StringBuffer sb = new StringBuffer(); String s = null; while((s = br.readLine()) != null){ sb.append(s); } Log.e("Test", sb.toString()); explain = readJson(sb.toString()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return explain; } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); tv.setText(result); } }.execute("http://fanyi.youdao.com/openapi.do?keyfrom=sdfsdfs3333&key=1799477203&type=data&doctype=json&version=1.1&q="+word); } private String readJson(String json){ StringBuffer sb = new StringBuffer(); try { JSONObject rootObject = new JSONObject(json); JSONObject basicObject = rootObject.getJSONObject("basic"); JSONArray explainsArray = basicObject.getJSONArray("explains"); for (int i = 0; i < explainsArray.length(); i++) { String explains = explainsArray.getString(i); sb.append(explains+"。\n"); Log.e("Test", explains); } //解析web JSONArray webArray = rootObject.getJSONArray("web"); for (int i = 0; i < webArray.length(); i++) { JSONObject webOject = webArray.getJSONObject(i); JSONArray valueArray = webOject.getJSONArray("value"); for (int j = 0; j < valueArray.length(); j++) { String explains = valueArray.getString(j); sb.append(explains+","); } sb.replace(sb.length()-1, sb.length(), "。\n"); // sb.delete(sb.length()-1, sb.length()); // sb.append("\n"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return sb.toString(); } }
1.HttpGet
[1]联网属于耗时操作,使用异步任务读取互联网数据。
[2]定义URL对象 (注意是URL,存放网址的对象)
[3]URLConnection c = url.openConnection()方法得到互联网连接
[4]InputStream is = connection.getInputStream();
[5]InputStreamReader isr = new InputStreamReader(is, "utf-8");
[6]BufferdeReader br = new BufferedReader(isr);
2.HttpPost
[1]Post和Get的区别,Post请求的数据内容不放在地址中。Get方式通过URL传递数据。
[2]使用HttpURLConnection 得到输出流,将请求的内容写入。
[3]setDoOutput(true) 打开写的权限
[4]setRequestMethod("POST") 设定请求方式为POST
有道词典
http://fanyi.youdao.com/
{
"translation":["中国"],
"basic":{"us-phonetic":"'tʃaɪnə","phonetic":"'tʃaɪnə","uk-phonetic":"'tʃaɪnə","explains":["n. 瓷器","adj. 瓷制的"]},
"query":"china",
"errorCode":0,
"web":[{"value":["中国","中华人民共和国","瓷器"],"key":"China"},{"value":["中国国际航空公司","中国国际航空","中国国航"],"key":"Air China"},{"value":["中国大陆","大陆中国","大陆地区"],"key":"Mainland China"}]
}
Json文件
key-value
key类型: String
value类型:{ } Object类型
[ ] 数组类型
String类型
数值类型(int, float)
[1]JSON文件格式:{"info": {"name":"jack", "age":20, "salary":1000, "爱好":["看电影", "打代码","跑步"]}}
<info>
<name>jack</name>
<age>20<age>
<salary>1000</salary>
<爱好>
<String>看电影</string>
<String>打代码</string>
<String>跑步 </string>
</爱好>
</info>
[2]JSON概念: javaScript对象表示法(JavaScript Object Notation) JSON属于轻量级文本数据交换格式
JSON独立于平台和语言 JSON具有自我描述性,更易理解
类似xml,比xml更小,更快,更易解析
[3]JSON语法: 数据保存在key:value(键值对)
[4]JSON数据类型:JSON的值(value)可以是: 数字(整型和浮点型) 字符串(用双引号) 对象(在花括号中) 数组(在方括号中)
[5]使用java解析JSON文件
JSONObject --- json文件中的Object类型
JSONArray --- json文件中的数组类型
相关文章推荐
- android 网络框架Android_Async_Http 初识
- 计算机网络之面试常考
- 【费用流】 COGS 461. [网络流24题] 餐巾
- android 网络框架 volley 初识
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- CCSDS空间网络互连
- HttpListener 实现web服务端
- tcp/ip学习笔记
- TCP如何区分已连接套接字和已请求连接字
- 从WebView到http协议
- 【网络流】 POJ 2125 Destroying The Graph
- TCP/IP协议学习之四(DNS协议)
- Microsoft 神经网络分析算法
- form表单提交到servlet显示HTTP Status 404错误The requested resource is not available.
- httpClient断线重连机制
- 网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记
- 【网络协议】互联网协议入门(一)
- Https原理介绍
- 第19章 网络通信----UDP程序设计基础
- 第19章 网络通信----TCP程序设计基础