美文网首页
网络请求

网络请求

作者: TakeItEasyJQ | 来源:发表于2017-08-22 10:40 被阅读0次

    这只是我在学Android过程中对于所学知识的巩固和方便日后查询的学习笔记,能帮助到有需要的和我一样的初学者就更好了

    具体实现分为以下步骤
    1、 创建访问地址的Url对象
    2、创建HttpURLConnection对象
    3、为HttpURLConnection对象连缀参数
    4、打开输出流解析内容
    5、关闭HttpURLConnection对象的网络连接

    Url url=new Url("http://www.baidu.com");
    HttpURLConnection connection=(HttpURLConnection)url.openConnection();
    connection.setRequeseMethod("GET");//发送则为POST
    connection.setConnectTimeout(8000);
    connection.setReadTime(8000);
    InputStream in=connection.getInputStream();
    connection.disconnect();
    

    当使用POST时
    获取输入流

    DataOutputStream out=new DataOutputStream(connection.getOutputStream());
    out.writeBytes("user=admin"&"pastword=123456");//以键值对形式并用&分隔
    

    开源OkHttp

    具体实现如下
    1、添加依赖compile 'com.squareup.okhttp3:okhttp:3.6.0'
    2、获取OkHttpClient对象OkHttpClient clent=new OkHttpClient();
    3、请求模式
    GET
    Request request=new Request.Builder().url("http://www.baidu.com").build();
    POST

    RequestBody body=new FromBody.Builder()
                                                            .add("username" ,"admin")
                                                            .add("pastword" ,"123456")
                                                            .build();
    Request request=new Request.Builder()
                                                            .url("http://www.baidu.com")
                                                            .post(body)
                                                            .build();
    

    4、发送请求
    Response resopnse=client.newcall(request).execute();
    5、获取结果
    String responseText response=response.body().string();

    可以直接封装成一个工具类

    public class HttpUtil{
        public static void sendOkHttpRequest(
                                                  String address ,okHttp3.Callback callback){
            OkHttpClient client=new OkHttpClient();
            Request request=new Request.Builder().url(address).build();
            client.newcall(request).enqueue(callback);
    //newcall()请求网络结果返回到callback接口中处理
        }    
    }
    

    使用时

    HttpUtil.sendOkHttpRequest(address ,new callback(){
        @override
        public void onResponse(Call call ,Response response) throws IOException{
            //逻辑,比如String responseText=response.body().string();
        }
        @override
        public void onFailure(Call call ,IOException e){
            //对于请求失败的逻辑处理
        }
    });
    

    相关文章

      网友评论

          本文标题:网络请求

          本文链接:https://www.haomeiwen.com/subject/hxecdxtx.html