使用HTTP访问网络

1、使用HttpURLConnection

package com.example.httpurlconnectiontest;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 发送HTTP请求模板代码
 * 
 * @author Administrator
 *
 */
public class HttpUrlConnectionUtil {

    public static void sendHttpRequest(final String address, final HttpCallbackListener listener) {
        new Thread(new Runnable() {

            @Override
            public void run() {
                HttpURLConnection connection = null;
                try {
                    URL url = new URL(address);
                    // 获取实例
                    connection = (HttpURLConnection) url.openConnection();
                    // 设置请求方式
                    connection.setRequestMethod("GET");

                    // 如果为POST方式
                    // connection.setRequestMethod("POST");
                    // DataOutputStream out = new
                    // DataOutputStream(connection.getOutputStream());
                    // out.writeBytes("username=admin&password=123456");

                    // 设置连接超时
                    connection.setConnectTimeout(5000);
                    // 设置读取超时
                    connection.setReadTimeout(5000);
                    // 是否可读可写
                    connection.setDoInput(true);
                    connection.setDoOutput(true);
                    // 获取服务器返回的输入流
                    InputStream in = connection.getInputStream();
                    // 对输入流进行读取
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        response.append(line);
                    }
                    if (listener != null) {
                        // 回调onFinish()方法
                        listener.onFinish(response.toString());
                    }
                } catch (Exception e) {
                    if (listener != null) {
                        // 回调onErrorr()方法
                        listener.onError(e);
                    }
                } finally {
                    if (connection != null) {
                        // 将这个HTTP连接关闭掉
                        connection.disconnect();
                    }
                }
            }
        }).start();
    }

    public interface HttpCallbackListener {

        void onFinish(String response);

        void onError(Exception e);
    }
}

调用的时候使用的模板代码:

        String address = "http://www.baidu.com";

        HttpUrlConnectionUtil.sendHttpRequest(address, new HttpCallbackListener() {

            @Override
            public void onFinish(String response) {
                // 在这里根据返回内容执行具体的逻辑
            }

            @Override
            public void onError(Exception e) {
                // 在这里对异常情况进行处理
            }
        });

不要忘记权限

<uses-permission android:name="android.permission.INTERNET"/>

2、使用HttpClient:
HttpClient是Apache提供的HTTP网络访问接口。
The type HttpClient is deprecated,官方已经不推荐使用了。
HttpClient的API数量众多,Android团队在提升和优化HttpClient方面的工作态度并不积极。
新的API样例:
DefaultHttpClient–>CloseableHttpClient
HttpResponse–>CloseableHttpResponse

所以用HttpURLConnection就够了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值