Я работаю над приложением Android, которое подключается к REST и вызывает метод.Это Embarcadero REST DataSnap.Использование таких параметров, как "@Query", полезно, когда вы вызываете такой метод:
www.app.net / api / searchtypes / 862189 / filters? Type = 6 & SearchText = School
Однако здесь методы вызываются по-разному:
/ datasnap / rest / some_class / some_method / some_parameter
Ниже приведен простой класс для обработки параметра, который идет в запросе.body:
public class Dane {
private int NAGL;
public Dane(int NAGL) {
this.NAGL = NAGL;
}
}
Когда я пытаюсь использовать аннотацию Retrofit @Query, например:
@POST("datasnap/rest/TstBaseMethods/%22SelectSQL%22/{aSelectSQL}")
Call<Logowanie> selectSQL(@Header("Authorization") String credentials,@Body Dane json,@Query("aSelectSQL") String aSelectSQL);
String dane = Credentials.basic("admin","admin");
Dane json = new Dane(11101);
Call<Logowanie> sql = gerritAPI.selectSQL(dane,json,"select n.datadok from nagl n where n.id_nagl =:NAGL");
и запускаю приложение, я вижу в журналах
TstBaseMethods.SelectSQL: {aSelectSQL} << {"NAGL": 11101} </p>
Содержимое aSelectSQL не отправляется на сервер.Я уже заметил, что если я жестко закодировал контент в URL и вызвал его, как показано ниже, он работает:
@POST("datasnap/rest/TstBaseMethods/%22SelectSQL%22/select%20n.datadok%20from%20nagl%20n%20where%20n.id_nagl%3D%3Anagl")
Call<Logowanie> selectSQL(@Header("Authorization") String credentials,@Body Dane json);
Можно ли как-нибудь правильно передать содержимое параметра на сервер?Не будет хорошо жестко закодировать все параметры в URL.