Ich versuche, über ein Odoov9-Modul eine Verbindung zu einem Webservice herzustellen.TypeError: Objekt des Typs 'bool' hat keine len() - Odoo v9
Dies ist meine Klasse:
class invoice(models.Model):
_inherit = "account.invoice"
@api.multi
def send_xml_file(self):
# haciendolo para efacturadelsur solamente por ahora
host = 'https://www.efacturadelsur.cl'
post = '/ws/DTE.asmx' # HTTP/1.1
url = host + post
_logger.info('URL to be used %s' % url)
# client = Client(url)
# _logger.info(client)
_logger.info('len (como viene): %s' % len(self.sii_xml_request))
response = pool.urlopen('POST', url, headers={
'Content-Type': 'application/soap+xml',
'charset': 'utf-8',
'Content-Length': len(
self.sii_xml_request)}, body=self.sii_xml_request)
_logger.info(response.status)
_logger.info(response.data)
self.sii_xml_response = response.data
self.sii_result = 'Enviado'
Aber jedes parst sie den Code auf den Server zu verbinden, führt es diesen Fehler:
Odoo Server Error
Traceback (most recent call last):
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/http.py", line 646, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/http.py", line 683, in dispatch
result = self._call_function(**self.params)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/http.py", line 319, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/http.py", line 312, in checked_call
result = self.endpoint(*a, **kw)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/http.py", line 962, in __call__
return self.method(*args, **kw)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/http.py", line 512, in response_wrap
response = f(*args, **kw)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/addons/web/controllers/main.py", line 901, in call_button
action = self._call_kw(model, method, args, {})
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/addons/web/controllers/main.py", line 889, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/api.py", line 381, in old_api
result = method(recs, *args, **kwargs)
File "/home/kristian/odoov9/odoo-9.0c-20160712/openerp/addons/l10n_cl_dte/models/invoice.py", line 102, in send_xml_file
_logger.info('len (como viene): %s' % len(self.sii_xml_request))
TypeError: object of type 'bool' has no len()
Der Fehler auf dieser Linie ist
_logger.info('URL to be used %s' % url) # client = Client(url) # _logger.info(client) _logger.info('len (como viene): %s' % len(self.sii_xml_request))
Ich habe durch SO gesucht, und es scheint zu sein im Zusammenhang mit Klammern, aber ich bin mir immer noch nicht wirklich sicher.
Irgendwelche Ideen dazu?
Vielen Dank im Voraus!
EDIT
Dies ist der Code, der es setzt:
sii_xml_request = fields.Text(
string='SII XML Request',
copy=False,
)
'self.sii_xml_request' ist ein 'bool'-Objekt, und Sie können' len() 'nicht aufrufen. Welche Art von Objekt haben Sie erwartet, dass "self.sii_xml_request" zu sein? Kannst du uns den Code zeigen, der es setzt? –
@JohnGordon Hallo, Danke, Ich habe meine Frage bearbeitet, wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen – NeoVe