TypeError: Невозможно неявно преобразовать объект 'bytes' в str внутри библиотеки pysimplesoap - PullRequest
0 голосов
/ 20 сентября 2018

Я использую Windows 2016 Server с Apache 2.4.34 (дистрибутив Apache Lounge).У меня есть сервис SOAP в Python 3.4, загруженный с библиотекой mod_wsgi.Когда сервер получает запрос, в журнале ошибок Apache отображается следующее сообщение:

mod_wsgi (pid=2600): Exception occurred processing WSGI script 'C:/Apache24/cgi-bin/wstsibio5/wstsibio5.wsgi'.
Traceback (most recent call last):\r
  File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 163, in dispatch\r
    ns = NS_RX.findall(xml)\r
TypeError: can't use a string pattern on a bytes-like object\r
\r
During handling of the above exception, another exception occurred:\r
\r
Traceback (most recent call last):\r
  File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 499, in __call__\r
    return self.handler(environ, start_response)\r
  File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 505, in handler\r
    return self.do_post(environ, start_response)\r
  File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 532, in do_post\r
    response = self.dispatcher.dispatch(request)\r
  File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 211, in dispatch\r
    detail += '\\n\\nXML REQUEST\\n\\n' + xml\r
TypeError: Can't convert 'bytes' object to str implicitly\r

У меня такая же среда, работает нормально на другом сервере, но здесь у меня есть эта проблема, которая сделала меня потерянным2 дня.Ошибка не в моем коде, она возникает только тогда, когда запрос поступает на сервер Apache и передает его в код Python.

Это объявление диспетчера SOAP:

ws = SoapDispatcher(
     'my_dispatcher',
     location="http://localhost:" + str(puerto) + "/",
     action="http://localhost:" + str(puerto) + "/",  # SOAPAction
     namespace="http://localhost:" + str(puerto) + "/wstsibio4.wsdl",
     prefix="ns0",
     trace=True,
     pretty=True,
     debug=True,
     ns=True)

Иэта функция зарегистрирована.Есть и другие, но они зависят от ответа этого:

ws.register_function('Presente', presente,
                     returns={'Respuesta': SimpleXMLElement},
                     args={'id': int, 'serie': str, 'codigo': int, 'mac': str, 'ip': str,
                           'reg_marc': int, 'huellas': int, 'huellas_nuevas': int, 'huellas_modificadas':int,
                           'huellas_eliminadas':int, 'operacion': int, 'mensaje': str, 'fecha_hora': str})

На всякий случай импорт скрипта:

import os
import yaml
import binascii
import datetime
from pysimplesoap.server import SoapDispatcher, SOAPHandler, WSGISOAPHandler
from pysimplesoap.simplexml import SimpleXMLElement
from http.server import HTTPServer

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

Привет из Эквадора: -D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...