2017-07-18 78 views
0

我試圖接收並處理從我的iOS應用程序發送到我的Node.js Web服務器的POST請求。每當我嘗試發送此POST請求時,服務器都會響應HTTP Error 502。你可以看看我的代碼,看看它有什麼問題嗎?謝謝!從Node.js接收來自Swift的POST請求

Node.js的代碼

app.post('/applogin', function(req, res) { 
    var parsedBody = JSON.parse(req.body); 
    console.log(parsedBody) 
}); 


Swift代碼(POST功能)

func httpPost(jsonData: Data) { 
    if !jsonData.isEmpty { 
     var request = URLRequest(url: url) 
     request.httpMethod = "POST" 
     request.httpBody = jsonData 

     URLSession.shared.getAllTasks { (openTasks: [URLSessionTask]) in 
      NSLog("open tasks: \(openTasks)") 
     } 

     let task = URLSession.shared.dataTask(with: request, completionHandler: { (responseData: Data?, response: URLResponse?, error: Error?) in 
      NSLog("\(response)") 
     }) 
     task.resume() 
    } 
    } 


Swift代碼(發送POST請求的)

@IBAction func onClick(_ sender: Any) { 
    let username = Username.text 
    let password = Password.text 

    var dataString = "username: \(username), password: \(password)" 

    let data = dataString.data(using: .utf8) 

httpPost(jsonData: data!) 

} 


提前感謝!

+0

您是否在node.js中設置了正確的路徑路徑?你有'app.post('/ applogin''可能是'app.post''/ app/login''。你在什麼地址嘗試從你的swift代碼發送請求? –

+0

@ŁukaszSzewczak它是/ applogin! –

+0

是否收到使用郵遞員的請求? – Lazyexpert

回答

2

你必須發送一個JSON而不是dataString,你必須設置 「內容類型」 標頭值 「應用/ JSON」

斯威夫特2

let request = NSMutableURLRequest(URL: requestUrl) 
     request.HTTPMethod = "POST" 

let params = ["username" : username, "password" : password] as Dictionary<String, AnyObject> 

request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options:NSJSONWritingOptions.PrettyPrinted) 

request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
+0

這是正確的答案。 – Blaze349

0

試試這個:

app.post('/applogin', function(req, res) { 
    var parsedBody = JSON.parse(req.body); 
    console.log(parsedBody) 
    res.send("Request received") 
}); 
+0

它仍然表示相同的錯誤,意外的令牌o在JSON位置1 –

+0

如果您將該錯誤與問題一起發佈,那將會很不錯。 – Blaze349