Всем привет. У меня стоит следующая задача, написание rest клиента для приложения в андроид. Проблема возникла при попытке использования нестандартных методов, начал искать как в HttpURLConnection добавить свой метод. Нашел следующее решение:
private static void allowMethods(String... meth) {
try {
System.out.println("RRR=" + HttpURLConnection.class.getDeclaredField("method"));
System.out.println("RRR=" + HttpURLConnection.class.getDeclaredField("methods"));
System.out.println(getAllModelFields(HttpURLConnection.class));
Field methodsField = HttpURLConnection.class.getDeclaredField("methods");
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL);
methodsField.setAccessible(true);
String[] oldMethods = (String[]) methodsField.get(null);
Set<String> methodsSet = new LinkedHashSet<>(Arrays.asList(oldMethods));
methodsSet.addAll(Arrays.asList(meth));
String[] newMethods = methodsSet.toArray(new String[0]);
methodsField.set(null/*static field*/, newMethods);
} catch (NoSuchFieldException e) {
throw new IllegalStateException(e);
}catch (IllegalAccessException e){
e.printStackTrace();
}
}
Далее в своей программе вызываю этот метод, передаю туда название нужного мне нового метода, и далее по стандарту пишу создание и выполнение запроса с указанием моего метода " con.setRequestMethod("MOVE");"
НО!!! Когда вставил этот код в android studio, ide сразу сообщила о проблеме, а именно: Cannot resolve field 'methods' less... (Ctrl+F1) This inspection detects reflective access to fields and methods which don't exist or aren't visible ну и с полем modifiers аналогично.
Попробовал этот же код в IntelliJ IDEA, там код выполняется, правда выдает варнинги. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by main (file:/D:/java/untitled1/out/production/untitled1/) to field java.lang.reflect.Field.modifiers WARNING: Please consider reporting this to the maintainers of main WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release
На что можно обратить внимание, куда копать? Заранее благодарен за ответ!
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу Класс для создание/чтения файлов propertiesКаждый файл находится в своей папке
У меня есть блоки фиксированной ширины и высотыЕсли их сделать слайдерами с помощью плагина owl-carousel-2, каждому блоку устанавливается атрибут...