您的位置:首页 > 移动开发 > Android开发

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

2016-11-14 10:43 393 查看
有能力的同学可以直接去看 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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: