2017-07-18 31 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