Не решает проблему смены сети между проверкой и запуском вашего кода, но довольно надежна
public static bool IsAvailableNetworkActive()
{
// only recognizes changes related to Internet adapters
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
// however, this will include all adapters -- filter by opstatus and activity
NetworkInterface[] interfaces = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
return (from face in interfaces
where face.OperationalStatus == OperationalStatus.Up
where (face.NetworkInterfaceType != NetworkInterfaceType.Tunnel) && (face.NetworkInterfaceType != NetworkInterfaceType.Loopback)
select face.GetIPv4Statistics()).Any(statistics => (statistics.BytesReceived > 0) && (statistics.BytesSent > 0));
}
return false;
}
Это не истинный SOAPpy, не работает с Python 2.5 - это работает, хотя это является очень простым и действительно, действительно основным. Если Вы хотите говорить еще со сложным веб-сервисом, ZSI является Вашим единственным другом.
действительно полезная демонстрация, которую я нашел, в http://www.ebi.ac.uk/Tools/webservices/tutorials/python - это действительно помогло мне понять, как ZSI работает.
Прямо сейчас (по состоянию на 2008), все библиотеки SOAP, доступные для Python, сосут. Я рекомендую избежать SOAP, если это возможно. В прошлый раз мы, где вызвано для использования веб-сервиса SOAP из Python мы записали обертку в C#, который обработал SOAP на одной стороне и говорил COM прямо другой.
Если вы катитесь, я бы очень рекомендую смотреть на http://effbot.org/zone/ Элемент-мыло.htm .
SOAPpy теперь устарел, AFAIK, его заменил ZSL. Это спорный вопрос, потому что я не могу заставить ни один из них работать, тем более компилироваться, ни на Python 2.5, ни на Python 2.6
.Я бы порекомендовал вам взглянуть at SUDS
«Suds - это облегченный клиент SOAP на Python для использования веб-служб».