如何在改造中解析 Restfull api JSON 响应?
How to parse Restfull api JSON response in retrofit?
我有一个典型的 Retrofit API 请求。我使用了 vb.net API 调用,returns 响应如下。
<string xmlns="http://tempuri.org/"> {"UserTickets":[{"Type":"Application","Category":"Mobile App","Sub Category":"Other","Issue Details":"Dummy","LMDT":"2019-11-14 15:46:00.000","ResponsibleEmail":"alex@goba.com"}],"success":"true","status:":"1"}</string>
我无法使用以下代码获取响应正文。如何从响应对象中获取响应主体?任何人都可以帮助我吗? API 调用 Android 代码如下:
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
mRetrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
CryptocurrencyService scalarService = mRetrofit.create(CryptocurrencyService.class);
Call<String> stringCall = scalarService.getStringResponse("800028");
stringCall.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.isSuccessful()) {
String responseString = response.body().toString();
// todo: do something with the response string
Log.e("TAG_RESPONSE", responseString);
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
问题是您的回复不是 JSON,这就是您无法收到回复的原因。
相反,如果您的响应是纯字符串,您应该添加 Retrofit 标量转换器 com.squareup.retrofit2:converter-scalars:2.5.0
,您可以查看示例 here.
或者如果您想将响应作为 XML 处理,您应该添加此转换器 compile 'com.squareup.retrofit2:converter-jaxb:2.4.0
我有一个典型的 Retrofit API 请求。我使用了 vb.net API 调用,returns 响应如下。
<string xmlns="http://tempuri.org/"> {"UserTickets":[{"Type":"Application","Category":"Mobile App","Sub Category":"Other","Issue Details":"Dummy","LMDT":"2019-11-14 15:46:00.000","ResponsibleEmail":"alex@goba.com"}],"success":"true","status:":"1"}</string>
我无法使用以下代码获取响应正文。如何从响应对象中获取响应主体?任何人都可以帮助我吗? API 调用 Android 代码如下:
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
mRetrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
CryptocurrencyService scalarService = mRetrofit.create(CryptocurrencyService.class);
Call<String> stringCall = scalarService.getStringResponse("800028");
stringCall.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.isSuccessful()) {
String responseString = response.body().toString();
// todo: do something with the response string
Log.e("TAG_RESPONSE", responseString);
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
问题是您的回复不是 JSON,这就是您无法收到回复的原因。
相反,如果您的响应是纯字符串,您应该添加 Retrofit 标量转换器 com.squareup.retrofit2:converter-scalars:2.5.0
,您可以查看示例 here.
或者如果您想将响应作为 XML 处理,您应该添加此转换器 compile 'com.squareup.retrofit2:converter-jaxb:2.4.0