import gluon.contrib.simplejson
data = gluon.contrib.simplejson.loads(request.body.read())
That was the trick....
Thank You Niphlod, You put me in the right direction.
IOS + WEB2PY = beautiful combination!!
Mchurch
Il giorno mercoledì 24 ottobre 2012 09:01:40 UTC+2, Mchurch ha scritto:
>
> Hi Niphlod, did You hope to be free of me so soon? :)
> Looking at web2py errors, if i make a post request values are empty (not
> if i make a GET, but the final result is the same).
> Using "CHARLES, web debugging proxy" i can see that data are dispatched
> with correct values and correct Content-Type (application/Json).
> Im doing my best....
>
>
>
>
>
> POST /Json/default/ricevo HTTP/1.1
> Host 127.0.0.1:8000 Accept */* Accept-Encoding gzip Content-Length 36
> Accept-Language en, fr, de, ja, nl, it, es, pt, pt-PT, da, fi, nb, sv,
> ko, zh-Hans, zh-Hant, ru, pl, tr, uk, ar, hr, cs, el, he, ro, sk, th, id,
> ms, en-GB, ca, hu, vi, en-us;q=0.8 Content-Type application/json;
> charset=utf-8 Connection keep-alive User-Agent mirko.json/1.0 (unknown,
> iPhone OS 6.0, iPhone Simulator, Scale/1.000000)
>
>
> <type 'exceptions.TypeError'>(expected string or buffer)
>>
>> inspect attributes
>>
>> -
>>
>> *Function argument list
>> *(self=<json.decoder.JSONDecoder object>, s=<Storage {}>,
>> _w=<built-in method match of _sre.SRE_Pattern object>)
>>
>> *Code listing
>> *
>> *Variables*
>> -
>> -
>>
>> *Context*
>>
>> locals
>>
>>
>>
>> request
>>
>>
>>
>> session
>>
>>
>>
>> response
>>
>> locals
>>
>> *s*
>>
>> :
>>
>> <Storage {}>
>>
>> *self*
>>
>> :
>>
>> <json.decoder.JSONDecoder object>
>>
>> request
>>
>> *ajax*
>>
>> :
>>
>> False
>>
>> *application*
>>
>> :
>>
>> Json
>>
>> *args*
>>
>> :
>>
>>
>> *body*
>>
>> :
>>
>> <open file '<fdopen>', mode 'w+b' at 0x11c143c00>
>>
>> *client*
>>
>> :
>>
>> 127.0.0.1
>>
>> *controller*
>>
>> :
>>
>> default
>>
>> *cookies*
>>
>> :
>>
>>
>> *env*
>>
>> :
>>
>> *app_folders*
>>
>> :
>>
>> set(['/Users/marcoMchurch/Sites/web2py/applications/Json/',
>> '/Users/marcoMchurch/Sites/web2py/applications/welcome/',
>> '/Users/marcoMchurch/Sites/web2py/applications/admin/'])
>>
>> *applications_parent*
>>
>> :
>>
>> /.…../web2py
>>
>> *cmd_args*
>>
>> :
>>
>>
>> *cmd_options*
>>
>> :
>>
>> <Values at 0x1104a53f8: {'verbose': False, 'ip': '127.0.0.1',
>> 'shutdown_timeout': 5, 'taskbar': False, 'nocron': False, 'pid_filename':
>> 'httpserver.pid', 'maxthreads': None, 'softcron': False, 'server_name':
>> 'marcos-', 'bpython': False, 'nogui': False, 'port': 8000, 'extcron':
>> False, 'debuglevel': 30, 'test': None, 'folder':
>> '/Users/marcoMchurch/Sites/web2py', 'config': '', 'import_models': False,
>> 'winservice': '', 'shell': None, 'run': '', 'log_filename':
>> 'httpserver.log', 'args': [''], 'socket_timeout': 1, 'ssl_ca_certificate':
>> None, 'scheduler': None, 'profiler_filename': None, 'ssl_private_key': '',
>> 'password': '<ask>', 'request_queue_size': 5, 'ssl_certificate': '',
>> 'cronjob': False, 'numthreads': None, 'quiet': False, 'interfaces': None,
>> 'minthreads': None, 'timeout': 10, 'plain': False, 'nobanner': False}>
>>
>> *content_length*
>>
>> :
>>
>> 36
>>
>> *content_type*
>>
>> :
>>
>> application/json; charset=utf-8
>>
>> *db_sessions*
>>
>> :
>>
>> set([])
>>
>> *debugging*
>>
>> :
>>
>> False
>>
>> *gluon_parent*
>>
>> :
>>
>> ….web2py
>>
>> *http_accept*
>>
>> :
>>
>> */*
>>
>> *http_accept_encoding*
>>
>> :
>>
>> gzip
>>
>> *http_accept_language*
>>
>> :
>>
>> en, fr, de, ja, nl, it, es, pt, pt-PT, da, fi, nb, sv, ko, zh-Hans,
>> zh-Hant, ru, pl, tr, uk, ar, hr, cs, el, he, ro, sk, th, id, ms, en-GB, ca,
>> hu, vi, en-us;q=0.8
>>
>> *http_connection*
>>
>> :
>>
>> keep-alive
>>
>> *http_content_length*
>>
>> :
>>
>> 36
>>
>> *http_content_type*
>>
>> :
>>
>> application/json; charset=utf-8
>>
>> *http_host*
>>
>> :
>>
>> 127.0.0.1:8000
>>
>> *http_user_agent*
>>
>> :
>>
>> mirko.json/1.0 (unknown, iPhone OS 6.0, iPhone Simulator, Scale/1.000000)
>>
>> *is_jython*
>>
>> :
>>
>> False
>>
>> *is_pypy*
>>
>> :
>>
>> False
>>
>> *path_info*
>>
>> :
>>
>> /Json/default/ricevo
>>
>> *query_string*
>>
>> :
>>
>>
>> *remote_addr*
>>
>> :
>>
>> 127.0.0.1
>>
>> *remote_port*
>>
>> :
>>
>> 60150
>>
>> *request_method*
>>
>> :
>>
>> POST
>>
>> *script_name*
>>
>> :
>>
>>
>> *server_name*
>>
>> :
>>
>> marcos-……
>>
>> *server_port*
>>
>> :
>>
>> 8000
>>
>> *server_protocol*
>>
>> :
>>
>> HTTP/1.1
>>
>> *server_software*
>>
>> :
>>
>> Rocket 1.2.4
>>
>> *web2py_crontype*
>>
>> :
>>
>> hard
>>
>> *web2py_path*
>>
>> :
>>
>> /Users/marcoMchurch/Sites/web2py
>>
>> *web2py_version*
>>
>> :
>>
>> 1
>>
>> 99
>>
>> 4
>>
>> datetime.datetime(2011, 12, 14, 14, 46, 14)
>>
>> stable
>>
>> *wsgi_errors*
>>
>> :
>>
>> <open file '<stderr>', mode 'w' at 0x10f7b2270>
>>
>> *wsgi_file_wrapper*
>>
>> :
>>
>> <class wsgiref.util.FileWrapper at 0x1103c1328>
>>
>> *wsgi_input*
>>
>> :
>>
>> <socket._fileobject object at 0x117971950>
>>
>> *wsgi_multiprocess*
>>
>> :
>>
>> False
>>
>> *wsgi_multithread*
>>
>> :
>>
>> True
>>
>> *wsgi_run_once*
>>
>> :
>>
>> False
>>
>> *wsgi_url_scheme*
>>
>> :
>>
>> http
>>
>> *wsgi_version*
>>
>> :
>>
>> 1
>>
>> 0
>>
>> *extension*
>>
>> :
>>
>> html
>>
>> *folder*
>>
>> :
>>
>> /Users/marcoMchurch/Sites/web2py/applications/Json/
>>
>> *function*
>>
>> :
>>
>> ricevo
>>
>> *get_vars*
>>
>> :
>>
>>
>> *global_settings*
>>
>> :
>>
>> *app_folders*
>>
>> :
>>
>> set(['/Users/marcoMchurch/Sites/web2py/applications/Json/',
>> '/Users/marcoMchurch/Sites/web2py/applications/welcome/',
>> '/Users/marcoMchurch/Sites/web2py/applications/admin/'])
>>
>> *applications_parent*
>>
>> :
>>
>> /Users/marcoMchurch/Sites/web2py
>>
>> *cmd_args*
>>
>> :
>>
>>
>> *cmd_options*
>>
>> :
>>
>> <Values at 0x1104a53f8: {'verbose': False, 'ip': '127.0.0.1',
>> 'shutdown_timeout': 5, 'taskbar': False, 'nocron': False, 'pid_filename':
>> 'httpserver.pid', 'maxthreads': None, 'softcron': False, 'server_name': '
>> marcos-imac.homenet.telecomitalia.it', 'bpython': False, 'nogui': False,
>> 'port': 8000, 'extcron': False, 'debuglevel': 30, 'test': None, 'folder':
>> '/Users/marcoMchurch/Sites/web2py', 'config': '', 'import_models': False,
>> 'winservice': '', 'shell': None, 'run': '', 'log_filename':
>> 'httpserver.log', 'args': [''], 'socket_timeout': 1, 'ssl_ca_certificate':
>> None, 'scheduler': None, 'profiler_filename': None, 'ssl_private_key': '',
>> 'password': '<ask>', 'request_queue_size': 5, 'ssl_certificate': '',
>> 'cronjob': False, 'numthreads': None, 'quiet': False, 'interfaces': None,
>> 'minthreads': None, 'timeout': 10, 'plain': False, 'nobanner': False}>
>>
>> *db_sessions*
>>
>> :
>>
>> set([])
>>
>> *debugging*
>>
>> :
>>
>> False
>>
>> *gluon_parent*
>>
>> :
>>
>> /Users/marcoMchurch/Sites/web2py
>>
>> *is_jython*
>>
>> :
>>
>> False
>>
>> *is_pypy*
>>
>> :
>>
>> False
>>
>> *web2py_crontype*
>>
>> :
>>
>> hard
>>
>> *web2py_version*
>>
>> :
>>
>> 1
>>
>> 99
>>
>> 4
>>
>> datetime.datetime(2011, 12, 14, 14, 46, 14)
>>
>> stable
>>
>> *is_https*
>>
>> :
>>
>> False
>>
>> *is_local*
>>
>> :
>>
>> True
>>
>> *is_restful*
>>
>> :
>>
>> False
>>
>> *now*
>>
>> :
>>
>> datetime.datetime(2012, 10, 23, 23, 37, 12, 447022)
>>
>> *post_vars*
>>
>> :
>>
>>
>> *url*
>>
>> :
>>
>> /Json/default/ricevo
>>
>> *utcnow*
>>
>> :
>>
>> datetime.datetime(2012, 10, 23, 21, 37, 12, 447035)
>>
>> *uuid*
>>
>> :
>>
>> Json/127.0.0.1.2012-10-23.23-37-12.35f491ef-469f-421f-93e9-0cebff13da2f
>>
>> *vars*
>>
>> :
>>
>>
>> *wsgi*
>>
>> :
>>
>> *environ*
>>
>> :
>>
>> *CONTENT_LENGTH*
>>
>> :
>>
>> 36
>>
>> *CONTENT_TYPE*
>>
>> :
>>
>> application/json; charset=utf-8
>>
>> *HTTP_ACCEPT*
>>
>> :
>>
>> */*
>>
>> *HTTP_ACCEPT_ENCODING*
>>
>> :
>>
>> gzip
>>
>> *HTTP_ACCEPT_LANGUAGE*
>>
>> :
>>
>> en, fr, de, ja, nl, it, es, pt, pt-PT, da, fi, nb, sv, ko, zh-Hans,
>> zh-Hant, ru, pl, tr, uk, ar, hr, cs, el, he, ro, sk, th, id, ms, en-GB, ca,
>> hu, vi, en-us;q=0.8
>>
>> *HTTP_CONNECTION*
>>
>> :
>>
>> keep-alive
>>
>> *HTTP_CONTENT_LENGTH*
>>
>> :
>>
>> 36
>>
>> *HTTP_CONTENT_TYPE*
>>
>> :
>>
>> application/json; charset=utf-8
>>
>> *HTTP_HOST*
>>
>> :
>>
>> 127.0.0.1:8000
>>
>> *HTTP_USER_AGENT*
>>
>> :
>>
>> mirko.json/1.0 (unknown, iPhone OS 6.0, iPhone Simulator, Scale/1.000000)
>>
>> *PATH_INFO*
>>
>> :
>>
>> /Json/default/ricevo
>>
>> *QUERY_STRING*
>>
>> :
>>
>>
>> *REMOTE_ADDR*
>>
>> :
>>
>> 127.0.0.1
>>
>> *REMOTE_PORT*
>>
>> :
>>
>> 60150
>>
>> *REQUEST_METHOD*
>>
>> :
>>
>> POST
>>
>> *SCRIPT_NAME*
>>
>> :
>>
>>
>> *SERVER_NAME*
>>
>> :
>>
>> marcos-……
>>
>> *SERVER_PORT*
>>
>> :
>>
>> 8000
>>
>> *SERVER_PROTOCOL*
>>
>> :
>>
>> HTTP/1.1
>>
>> *SERVER_SOFTWARE*
>>
>> :
>>
>> Rocket 1.2.4
>>
>> *wsgi.errors*
>>
>> :
>>
>> <open file '<stderr>', mode 'w' at 0x10f7b2270>
>>
>> *wsgi.file_wrapper*
>>
>> :
>>
>> <class wsgiref.util.FileWrapper at 0x1103c1328>
>>
>> *wsgi.input*
>>
>> :
>>
>> <open file '<fdopen>', mode 'w+b' at 0x11c143c00>
>>
>> *wsgi.multiprocess*
>>
>> :
>>
>> False
>>
>> *wsgi.multithread*
>>
>> :
>>
>> True
>>
>> *wsgi.run_once*
>>
>> :
>>
>> False
>>
>> *wsgi.url_scheme*
>>
>> :
>>
>> http
>>
>> *wsgi.version*
>>
>> :
>>
>> 1
>>
>> IN FILE:
>> /USERS/MARCOMchurch/SITES/WEB2PY/APPLICATIONS/JSON/CONTROLLERS/DEFAULT.PY
>>
>> 1.
>>
>> 2.
>>
>> 3.
>>
>> 4.
>>
>> 5.
>>
>> 6.
>>
>> 7.
>>
>> 8.
>>
>> 9.
>>
>> 10.
>>
>> 11.
>>
>> 12.
>>
>> 13.
>>
>> 14.
>>
>> 15.
>>
>> 16.
>>
>> 17.
>>
>> 18.
>>
>>
>> *# -*- coding: utf-8 -*-*
>>
>> *# this file is released under public domain and you can use without
>> limitations*
>>
>> **
>>
>> *
>> #########################################################################
>> *
>>
>> *## This is a samples controller*
>>
>> *## - index is the default action of any application*
>>
>> *## - user is required for authentication and authorization*
>>
>> *## - download is for downloading files uploaded in the db (does
>> streaming)*
>>
>> *## - call exposes all registered services (none by default)*
>>
>> *
>> #########################################################################
>> *
>>
>> *……*
>>
>> *def *ricevo*():*
>>
>> * **from *json *import *loads*, *dumps
>>
>> data *=
>> *loads*(*request<http://127.0.0.1:8000/examples/global/vars/request>
>> *.*vars*)*
>>
>> * **print *data
>>
>> *print *request <http://127.0.0.1:8000/examples/global/vars/request>*
>> .*vars*.*body*.*read*()*
>>
>> * **print *request<http://127.0.0.1:8000/examples/global/vars/request>
>> *.*vars
>>
>> *return *dumps*(*data*)*
>>
>
> Il giorno martedì 23 ottobre 2012 17:55:34 UTC+2, Niphlod ha scritto:
>>
>> almost dinner time here.... :P
>>
>> On Tuesday, October 23, 2012 5:44:45 PM UTC+2, Mchurch wrote:
>>>
>>> I'll try, thanks.
>>> Ps. Did You eat some snakes for breakfast?....
>>> :)
>>
>>
--