Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
ОБНОВЛЕНИЕ 23.01.2012
С тех пор, как я написал этот вопрос, я увидел гораздо лучший подход к защите REST, как веб-сервисы в дикой природе. Это звучало сложно, когда я впервые услышал об этом, но идея проста и доступна в Интернете как для веб-сервисов, так и для других безопасных коммуникаций.
Требуется использование открытых / закрытых ключей.
1.) Каждому пользователю (клиенту) конечной точки необходимо зарегистрироваться в веб-службе REST.
2.) Каждый запрос от пользователя должен сгенерировать хеш для подписи запроса
3.) Конечная точка сервера (ваш метод REST) должна будет генерировать хеш, используя те же входные данные, которые используются на клиенте. Этот шаг докажет, что и клиент, и сервер знают закрытый ключ, который соответствует открытому ключу, переданному вместе с запросом. (это, в свою очередь, означает, что пользователь, отправляющий запрос, является законным, поскольку никто другой не мог знать секретный ключ)
a.) поиск личного ключа клиента по открытому ключу, передаваемому вместе во время запроса
b.) возьмите другие параметры (временную метку и кодированную полезную нагрузку) вместе с закрытым ключом, который вы нашли на предыдущем шаге, и используйте тот же алгоритм для генерации одностороннего хэш (опять-таки, hmac - это то, что я видел в реальном мире)
Вот подкаст о защите служб WCF REST с поставщиком членства ASP.net:
http://channel9.msdn.com/posts/rojacobs/endpointtv-Securing-RESTful-services- с-ASPNET-членства /
Я согласен с Даррелом, что сложные сценарии REST для WCF - плохая идея. Это просто не красиво.
Тем не менее, Доминик Байер имеет хороших сообщений об этом в своем блоге с наименьшими привилегиями.
Если вы хотите увидеть поддержку аутентификации WSSE с отступлением от поддержки FormsAuthenticationTicket в WCF, ознакомьтесь с исходным кодом BlogService .
Прежде чем вы продолжите идти по этому пути борьбы за внедрение REST поверх WCF, я предлагаю вам прочитать этот пост Тима Эвальда. На меня особенно произвело впечатление следующее утверждение:
Я не уверен, что хочу основываться на слое, предназначенном для включения HTTP поверх слоя, который был разработан для его выделения.
Последние 12 месяцев я потратил на разработку материалов на основе REST для WCF, и это утверждение снова и снова подтверждается. ИМХО, что WCF приносит на стол, перевешивается сложностью, которую он вводит для выполнения работы REST.
Независимо от того, есть ли у сообщества мнения против REST на WCF (я лично нахожусь на заборе) Microsoft провела на этом укол, http://msdn.microsoft. ком / EN-US / NetFramework / cc950529.aspx
Да согласился с Moto, ссылка от Стартового набора WCF является самой близкой вещью, которую я видел к аутентификации учетных данных с помощью пользовательского HTTP-заголовка ( http://msdn.microsoft.com/en-us/library/dd203052.aspx ).
Однако я не мог получить движение в качестве примера.