14.Android学习之网络编程及Internet应用(一)

本文介绍了Android中使用HttpURLConnection进行HTTP网络编程的基本方法,包括发送GET和POST请求。强调了不在主线程进行网络操作的重要性,并给出了相关代码示例以及如何在本地搭建测试服务器的说明。
摘要由CSDN通过智能技术生成

目录

14.网络编程及Internet应用(一)

1.通过HTTP访问网络

1-1.发送GET请求

1-2.发送POST请求


14.网络编程及Internet应用(一)

1.通过HTTP访问网络

在Android中也可以使用HTTP协议访问网络。例如,在使用应用宝App下载游戏时,或者刷新朋友圈时,都需要通过HTTP协议访问网络。

在Android中提供了两个用于HTTP通信的API,即HttpURLConnection和Apache的HttpClient。由于Android 6.0版本已经基本将HttpClient从SDK中移除了。所以这里主要介绍HttpURLConnection。

HttpURLConnection类位于java.net 包中,用于发送HTTP请求和获取HTTP响应。由于该类是抽象类,不能直接实例化对象,则需要使用URL的openConnection()方法来获得。例如,要创建一个http://www.example.com 网站对应的HttpURLConnection对象,可以使用下面的代码:

URL url = new URL("http://www.example.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

HttpURLConnection是URLConnection的一个子类,它在URLConnection的基础上提供了如表14.1所示的方法,从而方便发送和响应HTTP请求。

表14.1 HttpURLConnection常用的方法

方法 描述
int getResponseCode() 获取服务器的响应代码
String getResponseMessage() 获取服务器的响应消息
String getRequestMethod() 获取发送请求的方法
void setRequestMethod(String method) 设置发送请求的方法

创建了HttpURLConnection对象后,就可以使用该对象发送HTTP请求了。

1-1.发送GET请求

使用HttpURLConnection对象发送请求时,默认发送的就是GET请求。因此,发送GET请求比较简单,只需要在指定连接地址时,先将要传递的参数通过“?参数名=参数值”的形式进行传递(多个参数间使用英文半角的“&”符号分隔。例如,要传递用户名和E-mail地址这两个参数,可以使用“?user=abc&email= abc@qq.com”实现),然后获取输入流中的数据,并关闭连接即可。

注:使用HTTP协议访问网络就是客户端与服务器的通信,所以运行本章实例不仅需要创建客户端app实例,还需要创建简单的后台服务器。

(1) 永远不要在主线程上执行网络调用。

(2) 在Service而不是Activity 中执行网络操作。

例 :

 MainActivity.java

package com.example.getrequest;
​
import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
​
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
​
public class MainActivity extends Activity {
    private EditText content;                    //定义一个输入文本内容的编辑框对象
    private Handler handler;                    //定义一个android.os.Handler对象
    private String result = "";                 //定义一个代表显示内容的字符串
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
​
        content = (EditText) findViewById(R.id.main_et1);    //获取输入文本内容的EditText组件
        final TextView resultTV = (TextView) findViewById(R.id.main_tv1);    //获取显示结果的TextView组件
        Button button = (Button) findViewById(R.id.main_btn1);    //获取“发表”按钮组件
        button.setOnClickListener(new View.OnClickListener() {  //单击发送按钮,实现读取服务器微博信息
            @Override
            public void onClick(View v) {
                //判断输入内容是否为空,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值