2015-04-24 3 views
2

Мне нужно отправить некоторые данные из arduino в веб-приложение, основанное на отдыхе.Приложение на основе Django для героя, показывающее ошибку HTTP/1.1 505 Версия HTTP не поддерживается

Для проверки я создал Джанго на основе веб-приложение на Heroku

Теперь, когда я пытаюсь отправить данные из Arduino с использованием GSM AT команды он показывает ниже ошибки

HTTP/1.1 505 HTTP Version Not Supported Connection: close Server: Cowboy

Ниже мой код в arduino

const char HTTP_HEADER_POST[ ] = "POST /api/sprints HTTP/1.1\r\nHost: obttracker.herokuapp.com\r\nContent-Length: 54\r\n\r\nUser-Agent: obttracker\r\nConnection: keep-alive\r\nContent-Type: application/x-wwww-form-urlencoded\r\nAuthorization: Basic ZGVtbzpkZW1v\r\n\r\n"; //HTTP header line before length 
    const char HTTP_BODY_POST[] = "end=2015-05-19&name=TESTING&point=POINT%2834.2+45.3%29"; 

    int tmp_post_len = strlen(HTTP_HEADER_POST); 
    //sending header packet to remote host 
    gsm_port.print("AT+QISEND="); 
    gsm_port.print(tmp_post_len); 
    gsm_port.print("\r"); 

    delay(500); 
    gsm_get_reply(); 

    //sending header      
    gsm_port.print(HTTP_HEADER_POST); 

    delay(500); 
    gsm_get_reply(); 

    //validate header delivery 
    gsm_validate_tcp(); 

    // send the body data 
    int body_len = strlen(HTTP_BODY_POST); 
    gsm_port.print("AT+QISEND="); 
    gsm_port.print(body_len); 
    gsm_port.print("\r"); 

    delay(500); 
    gsm_get_reply(); 

    gsm_port.print(HTTP_BODY_POST); 

    delay(500); 
    gsm_get_reply(); 

    //validate previous transmission 
    gsm_validate_tcp(); 

    parse_receive_reply(); 

Я протестировал веб-приложение, отправив через систему linux с использованием запросов python, и он работает ниже детали

$ python 
    Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
    [GCC 4.7.2] on linux2 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> import datetime 
    >>> import requests 
    >>> import pprint 
    >>> today = datetime.date.today() 
    >>> data = {'name': 'TESTSTING', 'end': today, 'point': 'POINT(56.3  33.3)'} 
    >>> resp = requests.get('http://obttracker.herokuapp.com/api') 
    >>> resp.status_code 
    200 
    >>> api = resp.json() 
    >>> pprint.pprint(api) 
    {u'sprints': u'http://obttracker.herokuapp.com/api/sprints'} 
    >>> resp = requests.post(api['sprints'], data=data, auth=('demo', 'demo')) 
    >>> resp.status_code 
    201 
    >>> sprint = resp.json() 
    >>> pprint.pprint(sprint) 
    {u'end': u'2015-04-24', 
    u'id': 3, 
    u'links': {u'self':  u'http://obttracker.herokuapp.com/api/sprints/3'}, 
    u'name': u'TESTSTING', 
    u'point': {u'coordinates': [56.3, 33.3], u'type': u'Point'}} 
    >>> 

Просьба предоставить мне предложение или помочь решить эту проблему

ответ

1

получил его решить, проблема с кодировкой «Content-Length» в HTTP-заголовке. Он должен быть преобразован в ASCII. Также ошибка опечатки двойного пробела в «/ api/sprints HTTP/1.1 \ r \ n» приведет к той же проблеме. :)

Я глупо делаю глупую ошибку, после 19 часов непрерывного кодирования.