Android开发-Retrofit-AndroidStudio(一)百度首页解析

有能力的同学可以直接去看 Retrofit官方Demo:

https://github.com/square/retrofit


我这边简单使用一下,以百度首页解析作为开篇:

导入jar包:

有网络和无网络的效果图:

Service.java:

package com.iwanghang.retrofitdemo;

import retrofit2.Call;
import retrofit2.http.GET;

public interface Service {
    @GET("/") // 因为我们是解析首页,也就是根目录,所以这边写"/"
    Call<String> getBaidu();
}
MainActivity.java:

package com.iwanghang.retrofitdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Converter;
import retrofit2.Response;
import retrofit2.Retrofit;

/**
 * Retrofit官方Demo
 * https://github.com/square/retrofit
 */
public class MainActivity extends AppCompatActivity implements Callback<String> {

    TextView main_text;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        /**
         * 实例化Retrofit
         * Converter 转换器 可以转换任意数据类型
         */
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://www.baidu.com")
                .addConverterFactory(
                        new Converter.Factory() {
                            @Override
                            public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
                                //return super.responseBodyConverter(type, annotations, retrofit);
                                return new Converter<ResponseBody, String>() {
                                    @Override
                                    public String convert(ResponseBody value) throws IOException {
                                        //return null;
                                        return value.string();
                                    }
                                };
                            }
                        }
                ).build();
        Service service = retrofit.create(Service.class); // 实例化服务
        Call<String> call = service.getBaidu(); // 创建请求
        call.enqueue(this); // 异步请求

        main_text = (TextView) findViewById(R.id.main_text);

    }

    // 异步请求 成功
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
        Toast.makeText(this, "请求成功", Toast.LENGTH_SHORT).show();
        main_text.setText(response.body());
    }

    // 异步请求 失败
    @Override
    public void onFailure(Call<String> call, Throwable t) {
        Toast.makeText(this, "请求失败"+call.request().url(), Toast.LENGTH_SHORT).show();
        t.printStackTrace();
    }
}
另外不用忘记在AndroidManifest.xml加网络权限:

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

给默认activity_main.xml的textView加id。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值