Я сталкиваюсь с этой проблемой в течение многих часов. У меня есть строка 123#5432#7
по этой ссылке, но когда я пытаюсь получить ее через Retrofit
, я получаю только символы перед первым #, в этом случае вывод равен 123, но мне нужна вся строка. Я попытался получить его с помощью OkHttpClient
, он работает нормально. Может ли кто-нибудь найти проблему с моим кодом Или какие еще возможные способы?
Выход
123
но я хочу всю строку, как 123#5432#7
Обновлено: добавлено .addConverterFactory(ScalarsConverterFactory.create())
, но ответ тот же.
Код
public class ApiClient {
public static Retrofit retrofit;
public static String BASE_URL = "https://prdec.com/status_app/";
public static Retrofit getRetrofit(){
Gson gson = new GsonBuilder()
.setLenient()
.create();
if (retrofit == null){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addConverterFactory(ScalarsConverterFactory.create())
.build();
}
return retrofit;
}
}
public interface ApiService {
@GET("status_app_return_string.php")
Call<String> getStringResponse();
}
ApiService apiService = ApiClient.getRetrofit().create(ApiService.class);
apiService.getStringResponse()
.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
String str = response.body();
Log.d(TAG, "onResponse: "+str);
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
@laalto я пытался добавить .addConverterFactory(ScalarsConverterFactory.create())
но ответ тот же
Вы добавили его перед фабрикой gson, чтобы она имела приоритет над ней?
Я добавил его после фабрики gson, как в приведенном выше коде. Влияет ли ранг?
@laalto это сработало, я просто заменил `.addConverterFactory(ScalarsConverterFactory.create())` выше .addConverterFactory(GsonConverterFactory.create(gson))
..
Проблема была с ранжированием .addConverterFactory(GsonConverterFactory.create(gson))
и addConverterFactory(ScalarsConverterFactory.create())
ScalarsConverterFactory должен быть выше других фабрик преобразователей.
Не работает
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addConverterFactory(ScalarsConverterFactory.create())
.build();
Работающий
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
Добавьте фабрику преобразователей скаляров в свою модификацию, чтобы поддерживать
String
типы ответов. stackoverflow.com/questions/36523972/…