Visualizzazione risultati 1 fino 7 di 7

Discussione: errore bad request su http post da dispositivo esterno

  1. #1
    Guest

    Predefinito errore bad request su http post da dispositivo esterno

    Ciao a tutti,
    sto cercando di fare una richiesta http post su altervista dove ho installato il servizio emoncms da un dispositivo wireless esterno.
    Il cms è nella cartella/emoncms
    Dopo essermi connesso al server, la richiesta che invio è la seguente:

    Codice:
    POST /emoncms/input/post.json? HTTP/1.1
    HOST: wattodemo.altervista.org/
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 51
    
    json={32,2}&apikey=2dd2bff9ffd9ae45f17ec2d75df44cbf
    La risposta del server è:

    Codice:
    HTTP/1.1 400 Bad Request
    Date: Thu, 05 Jun 2014 09:20:17 GMT
    Server: Apache
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=iso-8859-1
    La richiesta inviata dal rest client di chrome funziona perfettamente, quindi ritengo sia un problema di come è formulata la richiesta dal mio dispositivo.

    C'è un modo per fare il debug del problema? Non sono esperto di questi argomenti, ma su altri server non ho avuto lo stesso problema.

    Grazie
    Dario
    Ultima modifica di karl94 : 05-06-2014 alle ore 11.59.36

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Il problema è il valore dall'header Host: c'è uno slash di troppo alla fine. Inoltre solitamente non si scrive Host, con solo la prima lettera maiuscola, ma non è comunque un problema, visto che non è case-sensitive.

  3. #3
    Guest

    Predefinito

    Grazie per la risposta Karl94,
    avevo già provato senza slash...il problema è che mi da 404 not found

    Di seguito la richiesta modificata secondo i tuoi suggerimenti

    Codice:
    POST /emoncms/input/post.json? HTTP/1.1
    Host: wattodemo.altervista.org
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 51
    
    json={32,2}&apikey=2dd2bff9ffd9ae45f17ec2d75df44cbf
    La risposta in questo caso è:

    Codice:
    HTTP/1.1 404 Not Found
    Date: Thu, 05 Jun 2014 10:30:50 GMT
    Server: Apache
    Transfer-Encoding: chunked
    Content-Type: text/html
    Ultima modifica di karl94 : 05-06-2014 alle ore 12.42.11 Motivo: Formattazione delle richieste HTTP

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Allora dev'esserci qualche problema nel modo in cui viene effettuata, io ho appena provato e la risposta è la seguente:
    Codice:
    HTTP/1.1 200 OK
    Date: Thu, 05 Jun 2014 10:42:42 GMT
    Server: Apache
    Content-Length: 58
    Content-Type: application/json
    
    Error: Request contains no data via csv, json or data tag
    Connection closed by foreign host.
    Come effettui la richiesta esattamente?

  5. #5
    Guest

    Predefinito

    Ho una board flyport con microcontrollore e modulo radio.

    effettuo prima la connessione al server con server name "altervista.org"

    fin qui tutto bene.

    Utilizzo poi la seguente funzione

    Codice PHP:
    int HTTP_Post(TCP_SOCKET socket, char * host, char * path, char * custom_header, char * CType, char * data, char * header, int headersize, char * body, int bodysize, int timeout) //multipli di 10ms come vTaskDelay
    {
    char request[strlen(host)+strlen(path)+strlen(custom_header)+strlen(CType)+strlen(data)+100];

    TCPRxFlush(socket);

    sprintf(request,"POST %s HTTP/1.1\r\nHost: %s\r\nContent-Type: %s\r\nContent-Length: %d\r\n%s\r\n%s\r\n", path, host, CType, strlen(data), custom_header,data);

    UARTWrite(1,request);

    TCPWrite(socket,request,strlen(request));
    return
    HTTP_Read(socket, header, headersize, body, bodysize, timeout);
    }
    dove
    Codice:
    Host = wattodemo.altervista.org
    path = /emoncms/input/post.json?
    CType = application/x-www-form-urlencoded
    key = 2dd2bff9ffd9ae45f17ec2d75df44cbf
    la funzione "funziona" :), riesco a postare correttamente dati su altri servizi come xively o nimbits.

    La richista che hai effettuato ti ha comunque restituito un errore sul contenuto...o non lo hai inviato?

    Karl, c'è un modo di vedere qual'è la richiesta che arriva al server? file di log di apache?
    Ultima modifica di karl94 : 05-06-2014 alle ore 13.19.07

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da wattodemo Visualizza messaggio
    effettuo prima la connessione al server con server name "altervista.org"
    Instauri la connesstione TCP/IP verso il dominio altervista.org? Se è così il problema è quello: devi connetterti al dominio wattodemo.altervista.org, i server sono differenti.
    Citazione Originalmente inviato da wattodemo Visualizza messaggio
    La richista che hai effettuato ti ha comunque restituito un errore sul contenuto...o non lo hai inviato?
    Ho inviato la richiesta così come l'hai scritta.
    Citazione Originalmente inviato da wattodemo Visualizza messaggio
    Karl, c'è un modo di vedere qual'è la richiesta che arriva al server? file di log di apache?
    Probabilmente sì, ma io non vi ho accesso.

    P.s.: quando inserisci del codice, formattalo appropriatamente e se devi aggiungere qualcosa non scrivere un nuovo messaggio, ma modifica il precedente.
    Ultima modifica di karl94 : 05-06-2014 alle ore 13.27.42

  7. #7
    Guest

    Predefinito

    Ok perfetto, correggendo il nome del dominio in watto.altervista.org il server risponde correttamente 200 OK.

    Grazie!

    Resta il problema che non riesco a vedere i dati postati, ma probabilmente dipende dal cms installato.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •