ПЕНА - программный доступ к методам и типам

Едва ли программируя связанный, но я нашел это на Google, нет прямого сочетания клавиш , но делает его немного более быстрым.

, Чтобы включить или отключить режим QuickEdit:

  1. Открывают программу MS-DOS или командную строку.
  2. Щелкают правой кнопкой по строке заголовка и нажимают Properties.
  3. Выбор вкладка Options.
  4. Проверка или снятие флажка поле QuickEdit Mode.
  5. Нажимают OK.
  6. В Применять Свойствах К диалоговому окну Ярлыка, выберите свойства Apply к текущему окну, только если Вы хотите изменить настройки QuickEdit для этой сессии этого окна только, или выбор Изменяет ярлык, который запустил это окно для изменения настроек QuickEdit для всех будущих вызовов командной строки или программы MS-DOS.

QuickEdit

Для Копирования текста, когда QuickEdit включают:

  1. Перетаскивание указатель мыши по тексту Вы хотите.
  2. Нажимают Enter (или щелкните правой кнопкой где угодно в окне) скопировать текст в буфер обмена.

Для Вставки текста, когда QuickEdit включают:

  1. Щелкают правой кнопкой где угодно в окне.

Для Копирования текста, когда QuickEdit отключен:

  1. Щелкают правой кнопкой по строке заголовка, нажимают Edit в меню и нажимают Mark.
  2. Перетаскивают мышь по тексту, который Вы хотите скопировать.
  3. Нажимают Enter (или щелкните правой кнопкой где угодно в окне) скопировать текст в буфер обмена.

Для Вставки текста, когда QuickEdit отключен:

  1. Щелкают правой кнопкой по строке заголовка, нажимают Edit в меню и нажимают Paste.

21
задан GHZ 28 October 2008 в 02:38
поделиться

2 ответа

Согласно документации suds , вы можете проверить объект службы с помощью __ str () __ . Таким образом, следующий получает список методов и сложных типов:

from suds.client import Client;

url = 'http://www.webservicex.net/WeatherForecast.asmx?WSDL'
client = Client(url)

temp = str(client);

Приведенный выше код дает следующий результат (содержимое temp ):

Suds ( https://fedorahosted.org/suds/ )  version: 0.3.4 (beta)  build: R418-20081208

Service ( WeatherForecast ) tns="http://www.webservicex.net"
   Prefixes (1)
      ns0 = "http://www.webservicex.net"
   Ports (2):
      (WeatherForecastSoap)
         Methods (2):
            GetWeatherByPlaceName(xs:string PlaceName, )
            GetWeatherByZipCode(xs:string ZipCode, )
         Types (3):
            ArrayOfWeatherData
            WeatherData
            WeatherForecasts
      (WeatherForecastSoap12)
         Methods (2):
            GetWeatherByPlaceName(xs:string PlaceName, )
            GetWeatherByZipCode(xs:string ZipCode, )
         Types (3):
            ArrayOfWeatherData
            WeatherData
            WeatherForecasts

Это было бы намного проще проанализировать. Также для каждого метода указаны параметры и их типы. Возможно, вы даже можете использовать регулярное выражение для извлечения нужной информации.

19
ответ дан 29 November 2019 в 06:44
поделиться

Итак, SUDS творит немного волшебства.

suds.client.Client создается из файла WSDL:

client = suds.client.Client("http://mssoapinterop.org/asmx/simple.asmx?WSDL")

Он загружает WSDL и создает определение в client.wsdl . Когда вы вызываете метод, использующий SUDS, через client.service. , он фактически за кулисами выполняет целую кучу рекурсивной магии разрешения против этого интерпретированного WSDL. Чтобы обнаружить параметры и типы для методов, вам необходимо проанализировать этот объект.

Например:

for method in client.wsdl.services[0].ports[0].methods.values():
    print '%s(%s)' % (method.name, ', '.join('%s: %s' % (part.type, part.name) for part in method.soap.input.body.parts))

Это должно напечатать что-то вроде:

echoInteger((u'int', http://www.w3.org/2001/XMLSchema): inputInteger)
echoFloatArray((u'ArrayOfFloat', http://soapinterop.org/): inputFloatArray)
echoVoid()
echoDecimal((u'decimal', http://www.w3.org/2001/XMLSchema): inputDecimal)
echoStructArray((u'ArrayOfSOAPStruct', http://soapinterop.org/xsd): inputStructArray)
echoIntegerArray((u'ArrayOfInt', http://soapinterop.org/): inputIntegerArray)
echoBase64((u'base64Binary', http://www.w3.org/2001/XMLSchema): inputBase64)
echoHexBinary((u'hexBinary', http://www.w3.org/2001/XMLSchema): inputHexBinary)
echoBoolean((u'boolean', http://www.w3.org/2001/XMLSchema): inputBoolean)
echoStringArray((u'ArrayOfString', http://soapinterop.org/): inputStringArray)
echoStruct((u'SOAPStruct', http://soapinterop.org/xsd): inputStruct)
echoDate((u'dateTime', http://www.w3.org/2001/XMLSchema): inputDate)
echoFloat((u'float', http://www.w3.org/2001/XMLSchema): inputFloat)
echoString((u'string', http://www.w3.org/2001/XMLSchema): inputString)

Таким образом, первый элемент кортежа типа части, вероятно, является тем, что вы after:

>>> client.factory.create(u'ArrayOfInt')
(ArrayOfInt){
   _arrayType = ""
   _offset = ""
   _id = ""
   _href = ""
   _arrayType = ""
 }

Обновление:

Для службы погоды кажется, что «параметры» являются частью с элементом , а не с типом :

>>> client = suds.client.Client('http://www.webservicex.net/WeatherForecast.asmx?WSDL')
>>> client.wsdl.services[0].ports[0].methods.values()[0].soap.input.body.parts[0].element
(u'GetWeatherByZipCode', http://www.webservicex.net)
>>> client.factory.create(u'GetWeatherByZipCode')
(GetWeatherByZipCode){
   ZipCode = None
 }

Но это волшебство '

27
ответ дан 29 November 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: