Сделал свободный вред стандартов HTML или помогают Интернету

Я считаю, что с Zeep легче работать, если у нас есть действительный и полный WSDL.

Простой API-сервис WSDL, который ожидает элемент без пространства имен, импортирует схему без пространства имен, например:



  
    
      
      
      
      
        
          
            
          
        
      
      
        
          
            
          
        
      
    
  
  
    
  
  
    
  
  
    
  
  
    
  
  
    
      This is a test WebService. Returns a number
      
      
    
  
  
    
    
      
      
        
        
        
      
      
        
      
    
  
  
    
      
    
  

С namespaceLessElement.xsd:



  
    
      
        
        
      
    
  

Обратите внимание, как Определение операции, которое ожидает, что значения заголовка указывают на правильные сообщения:


  
  
    
    
    
  
  
    
  

, и они, в свою очередь, ссылаются на правильные элементы:


  


  

Вы должны проверить в WSDL вашего веб-сервиса, что операция описывает оба заголовка и включает в себя определение схемы для обоих элементов. В примере WSDL пространство имен службы - targetNamespace="http://tempuri.org/", но оно должно указывать на URL-адрес вашей веб-службы.

Таким образом, предполагая, что ваш WSDL действителен и завершен, нам нужно определить Client, указывающий на WSDL, а затем установить значения заголовка с помощью параметра _soapheaders, аналогично методу, который я использовал здесь , но построение ссылка на содержание. Zeep может позаботиться о разных пространствах имен, но я обнаружил проблемы с пустыми:

transport = Transport(cache=SqliteCache())
self.Test = Client(wsdl='http://my-endpoint.com/production.svc?wsdl', transport=transport)

# Header objects
apiKey_header = xsd.Element(
    '{http://tempuri.org/}apiKey',
    xsd.ComplexType([
        xsd.Element(
            'api_key', xsd.String()
        )
    ])
)

pager_header = xsd.Element(
    'pager',
    xsd.ComplexType([
        xsd.Element(
            'page', xsd.Integer()
        ),
        xsd.Element(
            'per_page', xsd.Integer()
        )
    ])
)

apiKey_header_value = apiKey_header( api_key=key)
pager_header_value = pager_header( page=page, per_page=perpage)

# Request
response = self.Test.service.Api( _soapheaders=[apiKey_header_value, pager_header_value] )

logger.debug("Result={1}".format(response))

# Prints: Result=2 (or whatever value the test API sends)

РЕДАКТИРОВАТЬ: Пример сгенерированного запроса XML:


   
      
         1230011
      
      
         2
         10
      
   
   
      
   

Убедитесь, что заголовок, который имеет пространство имен определено с правильным URL.

Если у вас все еще есть проблемы, это может означать, что ваш WSDL не определяет все элементы или что он неправильно связывается с внешними XSD. В этих случаях один из вариантов - сохранить локальную копию WSDL и связанных XSD, затем отредактировать файлы, чтобы исправить ссылки, а затем вместо этого указать Zeep на этот локальный файл.

5
задан Rex M 17 February 2009 в 02:25
поделиться

6 ответов

Отсутствие стандартного осуществления не повредило принятие сети в малейшем. В любом случае это помогло ему. Сеть была первоначально разработана для ученых (у кого обычно есть мало терпения для программирования) отправить результаты исследования. Таким образом, либеральные синтаксические анализаторы позволили им не заботиться о разметке - достаточно хороший, было достаточно хорошо.

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

Но теперь, когда это отсутствует в более широком мире, мы должны запретить? Я не вижу стимула ни для кого сделать так. Производители браузера хотят долю рынка, и они не получают ее, будучи pissy, о которых страницах они отображаются правильно. Сайты содержания хотят достигнуть людей, и они не делают этого, только появляясь правильно в Opera. Лобби разработчика, такое как он, недостаточно.

Кроме того, один из разработчиков фронтенда причин может заряжаться, много денег (по сравнению с визуальными разработчиками) - то, потому что они знают входы и выходы различных браузеров. Если существует только один правильный путь, то он может быть сделан автоматически, и больше нет потребности в тех людях - хорошо, не в зарплатах программиста, так или иначе.

12
ответ дан 18 December 2019 в 06:04
поделиться

Большая часть неоднозначности и несоответствия в сети сегодня не от вещей как открытые теги - это от семантики CSS, являющейся непоследовательным от одного браузера до следующего. Даже если бы все веб-страницы были удивительно правильно построенным XML, то он не помог бы многому.

4
ответ дан 18 December 2019 в 06:04
поделиться

То, что HTML просто "повышает" текст и не является языком с операторами, циклами, функциями и другими общими элементами языка программирования, - то, что позволяет ему свободно интерпретироваться.

Можно было коррелировать эту свободную интерпретацию как создание более доступного языка разметки и легко используемого таким образом разрешение большему количеству "необразованных" людей доступа к языку.

Мое личное мнение - то, что это имеет мало общего с успехом Интернета. Вместо этого это - способность передать и поделиться информацией, которые делают Интернет "успешным".

4
ответ дан 18 December 2019 в 06:04
поделиться

Это повредило интернет-достижение.

Я вспоминаю слушание интервью подкаста с кем-то, кто работал над спецификацией HTML 2.0 и IIRC, там были большие дебаты в то время окружение строгости синтаксических анализаторов, придерживающихся стандарта.

Победители аргумента, используемого "хорошо реализованная система, должны быть либеральными в том, что он принимает и строгий в том, что он производит" подход, который был популярен в то время.

AFAICT многие люди теперь рассматривают этот подход как чрезмерно упрощенный - это звучит хорошим в принципе, но на самом деле редко работает на практике.

IMO, даже если бы HTML был супер строг с самого начала, это все еще было бы достаточно просто, чтобы большинство людей схватило. Внедрение, возможно, было незначительно медленнее в начале, но огромная сумма времени/денег (миллиарды долларов) будет сохранена в средний длительный срок.

4
ответ дан 18 December 2019 в 06:04
поделиться

Существует принцип, который описывает, как HTML и веб-браузеры могут работать и взаимодействовать с любым успехом вообще:

Будьте либеральны в том, что Вы принимаете, и консерватор в том, что Вы производите.

Должна быть некоторая широта между тем, что является "корректным" и "приемлемым" HTML. Поскольку HTML был разработан, чтобы быть "человеческим +rw", мы не должны быть удивлены, что существует столько ароматов супа тега. Гибкость является силой HTML везде, где люди должны быть вовлечены.

Однако та гибкость добавляет обработку наверху, которую может быть трудно выровнять по ширине, когда необходимо создать что-то для потребления машины. Это - причина XHTML и XML: это устраняет часть той гибкости в обмен на предсказуемый вход.

2
ответ дан 18 December 2019 в 06:04
поделиться

Если бы HTML был более строгим, то что-то более легкое генерировало бы необходимый сетевой эффект для Интернета для становления господствующей тенденцией.

1
ответ дан 18 December 2019 в 06:04
поделиться
Другие вопросы по тегам:

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