You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android应用中使用Retrofit与Laravel网页进行数据交互?

使用Retrofit从Laravel后端获取数据的完整步骤

Laravel端:搭建API接口

首先需要在Laravel中提供可被Retrofit调用的REST API,以下是一个简单的示例:

在routes/api.php中添加路由:

// 公开的示例数据接口
Route::get('/sample-data', function () {
    // 实际开发中可替换为数据库查询逻辑
    return response()->json([
        'status' => 'success',
        'data' => [
            ['id' => 1, 'title' => 'Laravel测试数据1', 'content' => '第一条测试内容'],
            ['id' => 2, 'title' => 'Laravel测试数据2', 'content' => '第二条测试内容']
        ]
    ]);
});

测试接口:访问http://你的Laravel域名/api/sample-data,确认能返回正确的JSON响应。如果需要接口认证,可以使用Laravel Sanctum或Passport实现,这里先以无认证接口为例。


Android端:配置Retrofit并发起请求

1. 添加依赖

在app/build.gradle的dependencies块中添加Retrofit及Gson转换器依赖:

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

同步Gradle完成依赖下载。

2. 添加网络权限

在AndroidManifest.xml中添加网络访问权限:

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

3. 定义数据模型类

根据Laravel返回的JSON结构,创建对应的数据类(以Java为例,Kotlin可使用更简洁的数据类):

public class SampleData {
    private String status;
    private List<DataItem> data;

    // Getter & Setter
    public String getStatus() { return status; }
    public void setStatus(String status) { this.status = status; }
    public List<DataItem> getData() { return data; }
    public void setData(List<DataItem> data) { this.data = data; }

    public static class DataItem {
        private int id;
        private String title;
        private String content;

        // Getter & Setter
        public int getId() { return id; }
        public void setId(int id) { this.id = id; }
        public String getTitle() { return title; }
        public void setTitle(String title) { this.title = title; }
        public String getContent() { return content; }
        public void setContent(String content) { this.content = content; }
    }
}

4. 定义Retrofit接口

创建接口描述API请求规则:

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

public interface ApiService {
    // 对应Laravel的/api/sample-data路由
    @GET("sample-data")
    Call<SampleData> getSampleData();
}

5. 初始化Retrofit并发起请求

在Activity或ViewModel中完成Retrofit初始化,并发起异步请求(避免阻塞主线程):

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import android.util.Log;

// 初始化Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("http://你的Laravel域名/api/") // 注意末尾斜杠
        .addConverterFactory(GsonConverterFactory.create())
        .build();

// 创建API服务实例
ApiService apiService = retrofit.create(ApiService.class);

// 发起异步请求
Call<SampleData> call = apiService.getSampleData();
call.enqueue(new Callback<SampleData>() {
    @Override
    public void onResponse(Call<SampleData> call, Response<SampleData> response) {
        if (response.isSuccessful() && response.body() != null) {
            SampleData result = response.body();
            if ("success".equals(result.getStatus())) {
                // 处理返回的数据,比如更新UI
                for (SampleData.DataItem item : result.getData()) {
                    Log.d("Retrofit", "标题:" + item.getTitle() + " 内容:" + item.getContent());
                }
            }
        } else {
            Log.e("Retrofit", "响应失败:" + response.message());
        }
    }

    @Override
    public void onFailure(Call<SampleData> call, Throwable t) {
        Log.e("Retrofit", "请求失败:" + t.getMessage());
    }
});

关键注意事项

  • 本地开发时,Laravel的baseUrl不要用localhost,需使用电脑的局域网IP(如http://192.168.1.100/api/),确保Android设备能访问。
  • 生产环境建议使用HTTPS,只需将baseUrl改为https开头即可。
  • 若接口需要认证,可在Retrofit请求中添加Header:
    @GET("sample-data")
    Call<SampleData> getSampleData(@Header("Authorization") String token);
    // 调用时传入 "Bearer 你的认证Token"
    

内容的提问来源于stack exchange,提问作者lewis04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:27:37