一门语言,联网编程都是非常重要,所以我们来简单的实现以下android开发如何写联网程序。
Http请求分为:
- GET:明文传参,在地址栏上可以看到参数,调用简单没,不安全。
- POST:暗文传参,在地址栏上看不到参数,调用稍微复杂,安全。
android上发送Http请求的方式有两种:
- HttpURLConnection类:是java的标准指定网站发送GET请求、POST请求类,使用相对简单,并且易于扩展,推荐使用。
-
HttpClient类:是android SDK提供的请求方式,对HTTP协议全面支持,但是在android6.0(API23)中,Google已经移除了该相关的类,因此不在赘述使用该类的使用。
这次我们使用GET方式进行获取数据,步骤:
1.创建URL对象。
2.通过 URL对象调用openConnection()方法获取HttpURLConnection对象。
3.设置相关属性。
4.HttpURLConnection对象通过getInputStream()方法获得输入流。
5.读取输入流,转成字符串。
效果图:
**其实很简单,列举一个例子:
假如从水库引水,首先要找到水库的位置,第二步将水引到工厂后建立一个阀门来控制水,第三步建立水道将水引到蓄水池,在水道口放上网来过滤鱼虾蟹,然后用小水桶把渔网的鱼一点一点的捞起来放到大水桶,最后晒网。**
代码演示:
布局文件:
<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="com.example.httpdemo.MainActivity" >
<Button android:id="@+id/a12" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获取" android:onClick="aaa" />
<ScrollView android:layout_below="@id/a12" android:layout_width="match_parent" android:layout_height="match_parent" >
<TextView android:id="@+id/a" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />
ScrollView>
RelativeLayout>
MainActivity:
package com.example.httpdemo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
// textview
private TextView mTextView;
// handler线程
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
mTextView.setText((String) msg.obj);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 绑定id
mTextView = (TextView) findViewById(R.id.a);
}
// 联网
private void getHttp() {
InputStream stream = null;
InputStreamReader re = null;
BufferedReader reader = null;
try {
// 找水源
URL url = new URL("http://www.baidu.com");
// 建立总闸
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// 建立水道
stream = conn.getInputStream();
// 捕鱼
// 小渔网
re = new InputStreamReader(stream);
// 大渔网
reader = new BufferedReader(re);
// 捞鱼
// 大水桶
String len = "";
// 小水桶
String temp = "";
while ((temp = reader.readLine()) != null) {
len += temp;
}
// 更新UI
Message sg = new Message();
sg.obj = len;
mHandler.sendMessage(sg);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 晒网,关闭资源
try {
if (reader != null) {
reader.close();
}
if (re != null) {
re.close();
}
if (stream != null) {
stream.close();
}
} catch (Exception e2) {
}
}
}
// 按钮监听
public void aaa(View v) {
//新建一个线程
new Thread() {
public void run() {
getHttp();
};
}.start();
}
}
android权限:
<uses-permission android:name="android.permission.INTERNET"/>
代码打包:android简单联网