So far, this seems to work fine. I struggle though when trying to write 
this data in my database.

I tried doing:
data = sj.loads(request.body.read())
#and later
return dict(db.someDatabase.insert(data))
#or
return dict(db.someDatabase.validate_and_insert(data))

for all of which I got the error message:
insert() takes exactly 1 argument (2 given)

Any ideas on how to solve this would be highly appreciated.

Regards,
Philipp
Am Mittwoch, 24. Oktober 2012 11:23:09 UTC+2 schrieb Niphlod:
>
> For future users reading this thread... this means that the Iphone sent 
> the JSON object POSTing to the page directly in the data stream, without 
> "the usual" form encoding. For that, you can access what has been posted 
> "in raw format" with request.body.read().
>
> PS: Keep the code small
>
> import gluon.contrib.simplejson as sj  #just if you don't have simplejson 
> in python path
> #in that case "import simplejson as sj" works
> data = sj.loads(request.body.read())
>
>
>
> On Wednesday, October 24, 2012 9:22:13 AM UTC+2, Mchurch wrote:
>>
>> 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?....
>>>>> :)
>>>>
>>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to