iOS Swift Http请求post方法使用头x-www-form-urlencoded?
我必须使用头作为JSON字符串的iOS Swift Http请求post方法使用头x-www-form-urlencoded?,ios,swift,xcode,alamofire,nsurlsessiondatatask,Ios,Swift,Xcode,Alamofire,Nsurlsessiondatatask,我必须使用头作为JSON字符串的application/x-www-form-urlencoded值进行API调用。当在postman中给出参数值和标题时,它工作正常并返回状态代码200ok。这里我使用的是后端节点js。Post方法在前端不起作用。不知道是什么问题 错误: Sometimes i am getting request time out, NSUrlfailingstring, finished with status code 1001 以下是我的后端代码: var st
application/x-www-form-urlencoded
值进行API调用。当在postman中给出参数值和标题时,它工作正常并返回状态代码200
ok。这里我使用的是后端节点js
。Post方法在前端不起作用。不知道是什么问题
错误:
Sometimes i am getting request time out,
NSUrlfailingstring, finished with status code 1001
以下是我的后端代码:
var status = {
SUCCESS : 'success',
FAILURE : 'failure'
}
var httpStatus = {
OK : HttpStatus.OK,
ISE : HttpStatus.INTERNAL_SERVER_ERROR,
BR : HttpStatus.BAD_REQUEST
}
exports.likes= function(req, res){
var Username =req.body.username;
var likecount=req.body.count;
var likedby = req.body.likedby;
var postId = req.body.postId;
var tokenId = req.body.tokenId;
var message = {
to: tokenId,
collapse_key: '',
data: {
name:Username,
Message:"Content about message",
Redirect:"TopostId : "+postId,
time: ""
},
notification: {
title: "Hey Buddy , Someone have liked your post",
body: likedby +"Likedyourpost",
icon: "notification"
}
};
fcm.send(message)
.then(function (response) {
console.log("Successfully sent with response: ", response);
res.status(httpStatus.OK).json({
status: status.SUCCESS,
code: httpStatus.OK,
error:''
});
return;
})
.catch(function (err) {
console.log(err);
});
};
module.exports = function(app) {
app.post('/likesnotification', notification.likes);
app.post('/commentsnotification', notification.comments);
app.post('/othernotification', notification.othernot);
app.post('/followrequset', notification.followreq);
app.post('/followresponse', notification.followres);
app.post('/publicaccountfollow', notification.publicacfollow);
};
以下是我在ios Swift中的前端代码:
尝试1:
func postNotification(postItem: String, post: Post) {
print("Get token from post:::",post.token)
print(postItem)
let token = UserDefaults.standard.string(forKey: "token")
let headers: HTTPHeaders = ["Content-Type" :"application/x-www-form-urlencoded"]
let parameters : [String:Any] = ["count":post.likeCount!, "likedby":currentName, "postId=":postItem, "token": post.token!]
Alamofire.request("http://highavenue.co:9000/likesnotification/", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
print(data)
}
break
case .failure(_):
print(response.result.error as Any)
break
}
}
}
var parameters = [String:Any]()
parameters["count"] = post.likeCount!
parameters["likedby"] = currentName
parameters["postId"] = postItem
parameters["token"] = post.token!
let Url = String(format: "http://highavenue.co:9000/likesnotification")
guard let serviceUrl = URL(string: Url) else { return }
// let loginParams = String(format: LOGIN_PARAMETERS1, "test", "Hi World")
let parameterDictionary = parameters
var request = URLRequest(url: serviceUrl)
request.httpMethod = "POST"
request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
return
}
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options:
[])
print(json)
}catch {
print(error)
}
}
}.resume()
非常感谢任何帮助。我看到了你的代码,你应该调用你为它创建的头参数。您在alamofire请求方法中没有传递头 如下图所示:
let headers: HTTPHeaders = ["Content-Type" :"application/x-www-form-urlencoded"]
let parameters : [String:Any] = ["count":post.likeCount!, "likedby":currentName, "postId=":postItem, "token": post.token!]
Alamofire.request("http://highavenue.co:9000/likesnotification/", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
print(data)
}
break
case .failure(_):
print(response.result.error as Any)
break
}
}
}
let headers:HTTPHeaders=[“内容类型”:“application/x-www-form-urlencoded”]
let参数:[String:Any]=[“count”:post.likeCount!,“likedby”:currentName,“postId=”:postItem,“token”:post.token!]
Alamofire.request(“http://highavenue.co:9000/likesnotification/,方法:.post,参数:参数,编码:JSONEncoding.default,标题:headers.responseJSON{(响应:DataResponse)in
开关(response.result){
成功案例:
如果let data=response.result.value{
打印(数据)
}
打破
案例.失败(uu):
打印(response.result.error,如有)
打破
}
}
}
在后端检查,检查您是否正在获取数据?@PratikPrajapati我正在postman中获取数据我的意思是,当您从设备请求时,您是否获取数据/simulator@PratikPrajapati获取错误已完成,错误代码:-1001可选(错误域=NSURLErrorDomain代码=-1001“请求超时”。UserInfo={NSUnderlyingError=0x1c0e56920{Error Domain=KCFerrorDomain=kCFErrorDomainCFNetwork Code=-1001“(null)”用户信息={{kCFStreamErrorCodeKey=-2102,{kCFStreamErrorDomainKey=4}},NSErrorFailingURLStringKey=,NSErrorFailingURLKey=,kCFStreamErrorDomainKey=4,{kCFStreamErrorCodeKey=-2102,NSLocalizedDescription=请求超时。})基于Dipen Chudasamaanswer@PratikPrajapati是的,我正在获取数据获取类似这样的错误,错误代码为:-1001可选(错误域=NSURErrorDomain code=-1001“请求超时。”UserInfo={NSUnderlyingError=0x1c0e56920{error Domain=kCFErrorDomainCFNetwork code=-1001“(null)”UserInfo={kCFStreamErrorCodeKey=-2102,{kCFStreamErrorDomainKey=4},NSErrorFailingURLStringKey=,NSErrorFailingUrKey=,kCFStreamErrorDomainKey=4,{kCFStreamErrorCodeKey=-2102,NSLocalizedDescription=请求超时。})你是否像我上面提到的那样,在alamo fire方法中传递了header变量?嘿,你能帮我解决这个问题吗?嘿,你能检查一下postman的屏幕截图吗?传递header如下:let headers=[“Content Type”:“application/x-www-form-urlencoded”]