上篇有提到會有需要傳資料給 API 的情況,本篇將會用登入的方式講述當今天要傳資料給 API 時該如何使用
一開始的步驟與上篇一樣:
(這邊是假設以將插建安裝完成)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create()) // 使用 Gson 解析
.baseUrl("...")//...為api的網址
.build();
3.到 API 拿資料時獲取他回傳的資料,並連結到創建資料格式的class
public interface ApiService {
//這裡常用的有 GET 與 POST,這就需要看API的設置來選擇使用。
//GET:會將你傳的資料顯示到網址上
//POST:不會將你傳的資料顯示到網址上
@POST("auth/login")//路徑
Call<LoginTokenModel>
getLoginToken(@Field("account") String account, @Field("password") String password);
//getLoginToken 後面放的即是你要傳的變數的名稱與空間 **注意名子一定要與API的相同**
}
再把主程式跟上面創建的 interface 連結到一起並放入你要傳的資料就可以了
public class MainActivity extends AppCompatActivity {
private ApiService apiService;
String account="account";
String pssword="password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create()) // 使用 Gson 解析
.baseUrl("...")//...為api的網址
.build();
apiService= retrofit.create(ApiService.class);
apiService.getLoginToken(account,password).enqueue(new Callback<LoginTokenModel>() {
//getLoginToken 裡面放以要傳的資料
@Override
public void onResponse(Call<LoginTokenModel> call, Response<LoginTokenModel> response) {
//拿 API 回傳的值
}
@Override
public void onFailure(Call<List<Modle>> call, Throwable t) {
Log.d("TAG", ""+t);
}
});
}
}