2016-01-17 2 views
0

У меня есть Intel Edison, работающий на сервере Node.JS, который печатает все, что я отправляю в консоль. Я могу успешно опубликовать его с помощью Postman и увидеть отправленные необработанные данные в консоли.POST raw для сервера Обработка

Теперь я использую для него обработку на POST, которая будет запускать различные события на сервере Node.JS.

Моя проблема заключается в том, что я не могу успешно обработать исходное тело на сервере, я пытался заставить это работать уже несколько часов.

import processing.net.*; 

String url = "192.168.0.107:3000"; 
Client myClient; 


void setup(){ 
    myClient = new Client(this, "192.168.0.107", 3000); 
    myClient.write("POST/HTTP/1.1\n"); 
    myClient.write("Cache-Control: no-cache\n"); 
    myClient.write("Content-Type: text/plain\n"); 
    //Attempting to write the raw post body 
    myClient.write("test"); 
    //2 newlines tells the server that we're done sending 
    myClient.write("\n\n"); 
} 

консоль показывает, что сервер получил POST, и правильные заголовки, но он не показывает каких-либо данных в нем.

Как указать, что «тест» - это необработанные данные POST?

HTTP-код из Почтальон:

POST HTTP/1.1 
Host: 192.168.0.107:3000 
Content-Type: text/plain 
Cache-Control: no-cache 
Postman-Token: 6cab79ad-b43b-b4d3-963f-fad11523ec0b 

test 

Выход сервера из POST от Почтальон:

{ host: '192.168.0.107:3000', 
    connection: 'keep-alive', 
    'content-length': '4', 
    'cache-control': 'no-cache', 
    origin: 'chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop', 
    'content-type': 'text/plain', 
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36', 
    'postman-token': 'd17676a6-98f4-917c-955c-7d8ef01bb024', 
    accept: '*/*', 
    'accept-encoding': 'gzip, deflate', 
    'accept-language': 'en-US,en;q=0.8' } 
test 

Выход сервера из моей POST от обработки:

{ host: '192.168.0.107:3000', 
    'cache-control': 'no-cache', 
    'content-type': 'text/plain' } 
{} 

ответ

0

I просто понял, что случилось, мне нужно было добавить заголовок длины содержимого, чтобы сообщить серверу, сколько данных прослушать f или, а затем перед символом новой строки.

Окончательный код:

import processing.net.*; 

String url = "192.168.0.107:3000"; 
Client myClient; 

void setup(){ 
    myClient = new Client(this, "192.168.0.107", 3000); 
    myClient.write("POST/HTTP/1.1\n"); 
    myClient.write("Cache-Control: no-cache\n"); 
    myClient.write("Content-Type: text/plain\n"); 
    myClient.write("content-length: 4\n");  
    myClient.write("\n"); 
    myClient.write("test"); 
    myClient.write("\n\n"); 
} 
Смежные вопросы