Android核心基础-7.Android 网络通信-1.获取文本数据
来源:互联网 发布:淘宝里的旺旺号是什么 编辑:程序博客网 时间:2024/04/30 13:56
从这节开始我们讲解Android网络通信。计划讲解内容:
- 获取文本数据
- 获取网络图片
- 获取XML
- 获取JSON
- 发送GET请求
- 发送POST请求
- HttpClient发送GET请求
- HttpClient发送POST请求
- 开源项目AsyncHttpClient
- HTTP协议上传文件
- 发送XML,访问WebService
- 多线程断点续传下载器
一、获取文本数据
- 使用URL封装一个地址
- openConnection()得到HttpUrlConnection对象
- getResponseCode()得到响应码
- getInputStream()得到输入流读取数据
访问网络的权限<uses-permission android:name="android.permission.INTERNET" />
注意: 安卓4.0以后联网需要开启新线程, 在新线程中操作界面还需要使用Handler
1.1网络请求
创建网络请求
public class TextService { public String getText(String path) throws Exception { URL url = new URL(path); // 把路径封装成URL对象 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 打开连接对象(还未联网) conn.setConnectTimeout(5000); // 设置超时时间, 如果连接超过5000毫秒未响应, 就抛出异常 int code = conn.getResponseCode(); // 获取响应码(真正联网) if (code == 200) { // 如果成功 InputStream in = conn.getInputStream(); // 获取输入流 ByteArrayOutputStream out = new ByteArrayOutputStream(); // 可以写出数据到内存的输出流 byte[] buffer = new byte[8192]; int length; while ((length = in.read(buffer)) != -1) // 从网络读取数据 out.write(buffer, 0, length); // 向内存写出数据 in.close(); out.close(); conn.disconnect(); byte[] data = out.toByteArray(); // 把写到内存的数据读取出来 String text = new String(data); // 解码为字符串(默认UTF-8) return text; } conn.disconnect(); throw new NetworkErrorException("网络错误: " + code); }}
我们的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".ClassicActivity" > <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:onClick="go" android:text="GO" /> <EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBaseline="@id/bt" android:layout_toLeftOf="@id/bt" android:hint="请输入要访问的地址" android:inputType="textUri" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/et" /></RelativeLayout>
Activity中开发送网络请求
public class MainActivity extends Activity { private EditText et; private TextView tv; private TextService service; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.et); tv = (TextView) findViewById(R.id.tv); service = new TextService(); } public void go(View v) { new Thread() { public void run() { try { String path = et.getText().toString().trim(); // 从EditText获取地址 final String text = service.getText(path); // 访问网络, 得到文本 handler.post(new Runnable() { public void run() { tv.setText(text); // 设置到TextView中 } }); } catch (Exception e) { e.printStackTrace(); handler.post(new Runnable(){ public void run() { Toast.makeText(getApplicationContext(), "服务器忙, 请稍后再试!", Toast.LENGTH_SHORT).show(); } }); } } }.start(); }}
0 0
- Android核心基础-7.Android 网络通信-1.获取文本数据
- Android核心基础-7.Android 网络通信-4.获取网络XML,JSON
- Android核心基础-7.Android 网络通信-7.上传
- Android核心基础-7.Android 网络通信-6.访问Webservice
- Android核心基础-7.Android 网络通信-8.下载
- Android核心基础-7.Android 网络通信-3.SmartImageView请求网络图片
- Android核心基础-7.Android 网络通信-2.使用开源项目AsyncHttpClient
- Android核心基础-7.Android 网络通信-5.发送GET、POST请求
- Android网络通信基础
- Android网络通信:通过volley和gson获取聚合数据
- Android获取网络数据
- android获取网络数据
- android获取网络数据
- Android 基础:http网络通信
- android网络通信之获取网络图片
- android网络通信之获取网络图片
- 【Android核心基础05】 - 网络编程
- Android HttpURLConnection(Get,Post方式)进行网络通信 获取数据和网络图片
- java学习笔记(六) collections--stack
- html基础2
- 55. Jump Game
- Volley学习笔记(二):使用Volley加载网络图片
- 七月日记
- Android核心基础-7.Android 网络通信-1.获取文本数据
- 在windows系统下修改hosts文件,使其可以修改
- poj 3660 Floyd应用(确定牛的位置)
- 七月二十八日 Linux操作系统c语言学习笔记
- MySQL_ROW
- 控件——ImageView
- session,cookie的区别,安全性
- 最大子数组问题
- Windows文件操作的API函数[转载]