Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發-Retrofit-AndroidStudio(一)百度首頁解析

Android開發-Retrofit-AndroidStudio(一)百度首頁解析

編輯:關於Android編程

有能力的同學可以直接去看 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 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 {

    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 responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
                                //return super.responseBodyConverter(type, annotations, retrofit);
                                return new Converter() {
                                    @Override
                                    public String convert(ResponseBody value) throws IOException {
                                        //return null;
                                        return value.string();
                                    }
                                };
                            }
                        }
                ).build();
        Service service = retrofit.create(Service.class); // 實例化服務
        Call call = service.getBaidu(); // 創建請求
        call.enqueue(this); // 異步請求

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

    }

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

    // 異步請求 失敗
    @Override
    public void onFailure(Call call, Throwable t) {
        Toast.makeText(this, "請求失敗"+call.request().url(), Toast.LENGTH_SHORT).show();
        t.printStackTrace();
    }
}
另外不用忘記在AndroidManifest.xml加網絡權限:

給默認activity_main.xml的textView加id。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved