[英]How to retrieve data from response? - Retrofit 2
來自服務器的響應如下:
{
success: true,
token: "someRandomToken"
}
如何從響應中檢索token
?
我嘗試遵循此處提供的解決方案,但無法在onResponse method
內的Call
添加泛型
編輯
這是我的方法
public void loginUser(final Context context, String url, String username, String passowrd, loginJson loginjson) {
final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
loginjson.setUsername(username);
loginjson.setPassword(passowrd);
Gson gson = new Gson();
String jsonFromForm = gson.toJson(loginjson);
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(JSON, jsonFromForm);
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("content-type", "application/json; charset=utf-8")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("Failure!!");
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
if(response.isSuccessful()) {
if (context != null) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if(response.body() != null){
}
}
});
}
//
} else {
if (context != null) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(context, context.getResources().getString(R.string.failed_to_login),
Toast.LENGTH_SHORT).show();
}
});
}
}
}
});
}
在實現@Piyush Patel答案之后:我將Call
和Response
更改為retrofit2.Call<tokenRetrieved>
和retrofit2.Reponse<tokenRetrieved>
。 但Callback
在我enqueue
提示錯誤要求我履行其onResponse
和onFailure
方法
新手問題:我正在使用retrofit1
方法嗎?
這是一個片段,顯示了如何使用GSON來實現它
public class JsonResponse {
public String success;
public String token;
public JsonResponse(String success, String token) {
this.success = success;
this.token = token;
}
}
Call<JsonResponse> call = api.checkLevel(1);
call.enqueue(new Callback<JsonResponse>() {
@Override
public void onResponse(Call<JsonResponse> call, Response<JsonResponse> response) {
if (response.isSuccessful()) {
JsonResponse jsonResponse=response.body();
}
}
@Override
public void onFailure(Call<JsonResponse> call, Throwable t) {
}
});
凌空你可以這樣做
試試這個代碼
public void onResponse(String response) {
try {
JSONObject object=new JSONObject(response);
if ((object.getBoolean("success"))==true){
String Token=object.getString("token");
}else{
// enter else condition
}
} catch (JSONException e) {
e.printStackTrace();
// json Exception
}
}
從您的響應字符串創建一個JSONObject
並使用密鑰token
獲取該字符串
JSONObject json = new JSONObject(response);
json.getString("token");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.