Thank you very much Anthony and Niphlod for your help.

I could rewrite my function to read the post JSON like this:

def sparkpost_message_opened():
    from gluon.contrib import simplejson
    post_data = simplejson.load(request.body) # notice it's load() and not 
loads()
    # here I can succesfully access post_data array

Thanks again!





El lunes, 7 de marzo de 2016, 15:23:28 (UTC-3), Niphlod escribió:
>
> it's sending a json as a post content, not the usual form data that is 
> automatically parsed.
> you'd get automatic request.post_vars reconstruction with json ONLY if 
> they posted an object, but instead they're posting an array of objects 
> (notice the [ ] at top and bottom).
> web2py (or anything, for that matter) can't build a key-value object (as 
> the usual request.post_vars) because there are no keys at the top level.
>
> if you want to receive that post, you need to read the request.body() and 
> parse the json accordingly.
>
> On Monday, March 7, 2016 at 5:51:53 PM UTC+1, Lisandro wrote:
>>
>> Thanks for the tip.
>>
>> I've done some tests, and I've found some details that could point the 
>> problem.
>>
>> I'm sending a test post to my app url, from SparkPost web app. 
>> SparkPost tells me that it will send this post:
>>
>> POST /ws/sparkpost_message_opened HTTP/1.1
>> Host: xxxxxxxxx.com.ar
>> Content-Type: application/json
>> X-MessageSystems-Batch-ID: 77c2b630-d712-11e4-9642-efc2723b99c1
>> Connection: close
>>
>> [
>>   {
>>     "msys": {
>>       "track_event": {
>>         "type": "open",
>>         "campaign_id": "Example Campaign Name",
>>         "customer_id": "1",
>>         "delv_method": "esmtp",
>>         "event_id": "92356927693813856",
>>         "ip_address": "127.0.0.1",
>>         "message_id": "0e0d94b7-9085-4e3c-ab30-e3f2cd9c273e",
>>         "rcpt_meta": {
>>           "customKey": "customValue"
>>         },
>>         "rcpt_tags": [
>>           "male",
>>           "US"
>>         ],
>>         "rcpt_to": "reci...@example.com",
>>         "raw_rcpt_to": "reci...@example.com",
>>         "rcpt_type": "cc",
>>         "subaccount_id": "101",
>>         "template_id": "templ-1234",
>>         "template_version": "1",
>>         "timestamp": 1454442600,
>>         "transmission_id": "65832150921904138",
>>         "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) 
>> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"
>> ,
>>         "geo_ip": {
>>           "country": "US",
>>           "region": "MD",
>>           "city": "Columbia",
>>           "latitude": "39.1749",
>>           "longitude": "-76.8375"
>>         }
>>       }
>>     }
>>   }
>> ]
>>
>>
>> I've modified my nginx log configuration, to log the $request_body to a 
>> log file, and I can see in deed the post (sorry about the format, but you 
>> can see the post data is there):
>>
>> [{\x22msys\x22:{\x22track_event\x22:{\x22type\x22:\x22open\x22,\
>> x22campaign_id\x22:\x22Example Campaign Name\x22,\x22customer_id\x22:\
>> x221\x22,\x22delv_method\x22:\x22esmtp\x22,\x22event_id\x22:\
>> x2292356927693813856\x22,\x22ip_address\x22:\x22127.0.0.1\x22,\
>> x22message_id\x22:\x220e0d94b7-9085-4e3c-ab30-e3f2cd9c273e\x22,\
>> x22rcpt_meta\x22:{\x22customKey\x22:\x22customValue\x22},\x22rcpt_tags\
>> x22:[\x22male\x22,\x22US\x22],\x22rcpt_to\x22:\x22recipi...@example.com\
>> x22,\x22raw_rcpt_to\x22:\x22recipi...@example.com\x22,\x22rcpt_type\x22:\
>> x22cc\x22,\x22subaccount_id\x22:\x22101\x22,\x22template_id\x22:\x22templ
>> -1234\x22,\
>> ...
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to