2015-11-10 22 views
6
var req ={ 
     "request": { 
     "header": { 
      "username": "name", 
      "password": "password" 
     }, 
     "body": { 
     "shape":"round"  
    } 
     } 
    }; 

    request.post(
     {url:'posturl', 

     body: JSON.stringify(req), 
     headers: { "content-type": "application/x-www-form-urlencoded"} 
     }, 
     function (error, response, body) {   
      if (!error && response.statusCode == 200) { 
       console.log(body) 
      } 
     } 
    ); 

Tôi muốn gửi nội dung yêu cầu thô trong biến số nguyên. Nó đang làm việc trên postman nhưng trong nút js tôi không thể gửi json thô như yêu cầu cơ thể cho yêu cầu bài viết.nút js gửi yêu cầu đăng với nội dung yêu cầu thô

+0

Lỗi là gì? Có thể "" kiểu nội dung của bạn ":" application/x-www-form-urlencoded "' không chính xác, vì bạn đang gửi JSON? Nó phải là 'application/json'. –

+0

POST /HTTP/JSON/Prices/GetPriceSheet.aspx HTTP/1.1 Host: host.com Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache { "yêu cầu": {"header": {"username": "name", "password": "pw"}, "body": {"shape": "round"}}} Đây là bản xem trước yêu cầu đang hoạt động trên người đưa thư. Vì vậy, tôi cần x-www-form-urlencoded trong tiêu đề mà còn gửi dữ liệu json thô. Lỗi tôi nhận được là định dạng sai từ dịch vụ còn lại. –

Trả lời

2

Thay đổi Content-Type thành application/json, vì cơ thể của bạn ở định dạng JSON.

+0

Đã cố gắng nhưng "loại nội dung": "ứng dụng/x-www-form-urlencoded" cũng là một yêu cầu cho tiêu đề. –

+0

Sau đó, bạn phải thay đổi cơ thể của bạn để có định dạng đó, không phải trong JSON. –

+0

Có, tôi đoán đó là vấn đề tôi không cần json nhưng dữ liệu trong chuỗi truy vấn theo loại nội dung. Tôi sẽ cố gắng tìm ra định dạng của x-www-form. Cảm ơn. –

5

Bạn đang cố gửi JSON (biến số req) nhưng bạn đang phân tích cú pháp dưới dạng Chuỗi (JSON.stringify(req)). Vì tuyến đường của bạn đang mong JSON, nó có thể sẽ thất bại và trả về lỗi. Hãy thử yêu cầu bên dưới:

request.post({ 
    url: 'posturl', 
    body: req, 
    json: true 
}, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body) 
    } 
}); 

Thay vì đặt tiêu đề, bạn chỉ có thể thêm tùy chọn json: true nếu bạn đang gửi JSON.

0

Thêm 'Độ dài nội dung' vào tiêu đề cho chuỗi được thêm vào nội dung, sẽ giải quyết vấn đề này. Nó làm việc cho tôi.

tiêu đề: { "Cache-Control": "no-cache", "Content-Type": "application/json; charset = UTF-8", 'Content-Length': req.length}

Các vấn đề liên quan