Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
1 Rispondi
9047 Visualizzazioni

Internal Server Error

{"message": "Odoo Server Error", "code": 200, "data": {"debug": "Traceback (most recent call last):\n File \"/opt/odoo/odoo-server/addons/web/controllers/main.py\", line 70, in wrap\n return f(*args, **kwargs)\n File \"/opt/odoo/odoo-server/addons/web_pdf_preview/controllers/__init__.py\", line 41, in index\n result.headers['Content-Disposition'] = result.headers['Content-Disposition'].replace('attachment', 'inline')\n File \"/usr/lib/python2.7/dist-packages/werkzeug/datastructures.py\", line 891, in __getitem__\n raise exceptions.BadRequestKeyError(key)\nBadRequestKeyError: 400: Bad Request\n", "message": "Content-Disposition", "name": "werkzeug.exceptions.BadRequestKeyError", "arguments": ["Content-Disposition"]}}

Help me please

Avatar
Abbandona
Risposta migliore

Your odoo server is responding with an error because it is not sure what database to respond from. You likely have more than one database.

An Odoo server is capable of hosting multiple databases simultaneously. When you make a request to an Odoo server one of if not the very first things it does is determine which instance or database the request should be handled by as each database could have different modules installed and different users / data and hence the same request to each database would very likely be handled differently and yield different results.

There are multiple ways of telling the server what database should be targeted for each request. Some of these are contextual and I do not know if a document is available to truly explain when one is relevant and another is not.

Here they are.

  1. db_filter: A regular expression contained in the startup script or the server configuration file. Ex. db_filter = %d (--db_filter %d in startup script) in this example http://test.com the database would be called test
  2. Query Stringhttp://test.com?db=test, certain handlers in Odoo will use this query string to determine what database to use for a request.
  3. Session Id: Clients (mostly web browsers) will store a cookie containing the session id and pass it to the server with each request "session_id=95bbc53e2ac4d02f50a8d6bf678602112a072807"

Bottom line the error you are getting is that your server is saying it cant possibly determine what database to respond to your request with. If you need a session id to pass to the server with the request you can use jsonrpc to authenticate. Store the session id and pass it in the headers of subsequent requests.


url = 'http://localhost:8069/web/session/authenticate'
data = {
        'jsonrpc':'2.0',
        'method':'call',
        'params':{
                  'context':{},
                  'db':'db_name',
                  'login':'admin',
                  'password':'admin'
                 },
        'id': null
       }

res = requests.post(url, data=data, headers={"Content-Type":"application/json"})

print(res.text)

# YOU WILL HAVE TO PARSE THE RESULT YOURSELF I AM NOT SURE THE RESPONSE OBJECT WILL BE AS BELOW
session_id = res.text['results']['session_id']

Now use the session_id in your requests.

res = requests.post('http://localhost:8069/test_json', headers={"Content-Type":"application/json"}, cookies={'session_id': session_id})
Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
0
ott 15
3467
2
mag 15
4466
1
mar 15
3444
9
lug 25
17638
4
nov 16
7550