Можно использовать "случай" - конструкция:
doGuessing num = do
putStrLn "Enter your guess:"
guess <- getLine
case (read guess) of
g | g < num -> do
putStrLn "Too low!"
doGuessing num
g | g > num -> do
putStrLn "Too high!"
doGuessing num
otherwise -> do
putStrLn "You Win!"
Существует три общих подхода к специальной безопасности SOAP:
Из трех, Я рекомендую первый метод , который не требует, чтобы сервер поддерживал состояние, но может быть столь же быстрым благодаря кэшированию.
Это очень похоже на мой вопрос: " Что мы должны реализовать, чтобы разрешить клиентам использовать нашу веб-службу? "
В итоге мы не публиковали WSDL, а только обслуживали сервис через https и требующий базовой аутентификации . НЕ используйте базовую аутентификацию, если вы не можете заставить всех клиентов использовать https.
Если это веб-служба .net, то вот запись файла конфигурации, чтобы запретить публикацию wsdl.
<system.web>
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
</system.web>
Когда вы переходите к На странице вы получите сообщение об ошибке, подобное тому, которое вы получили бы, если бы попытались вручную загрузить файл web.config с сайта. Как отмечает Стивен, это безопасность через неясность, и НЕ должен использоваться сам по себе для защиты вашей веб-службы. Однако при использовании в дополнение к базовому auth + https это немного приятное дополнение.
Код на стороне клиента:
Чтобы получить доступ к этой веб-службе из клиента, добавьте свою веб-ссылку обычным способом и в вызывающем коде ( предполагая, что ваша веб-ссылка называется WebRef).
WebRef.Url = "url";
WebRef.Credentials = new System.Net.NetworkCredential("userid", "password");
Кроме того, вы можете захотеть заглянуть в WebRef.PreAuthenticate, чтобы сэкономить некоторые циклы. Просто имейте в виду, что вы весело проведете время, проверяя это, если вы находитесь за корпоративным прокси. Прокси-серверы используются через WebRef
WebRef.Proxy = new WebProxy("url");
WebRef.Proxy.Credentials = new System.Net.NetworkCredential("userid", "password");