Я хотел бы скомпоновать следующий запрос curl в быстрый (или объектив-c).Swift (или объектив-c) эквивалент запроса на завивание
curl -X POST \ -d "login_id=mylogin_id" \
-d "api_key=myapi_key" \
https://~~~~~/v2/authenticate/api
следующее, что я написал.
func authentication(){
var loginID = "mylogin_id"
var apiKey = "myapi_key"
var post:NSString = "login_id=\(loginID)&api_key=\(apiKey)"
NSLog("PostData: %@",post);
var url:NSURL = NSURL(string:"https://~~~~~/v2/authenticate/api")!
var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!
var postLength:NSString = String(postData.length)
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
}
Если логин успешно завершен, токен будет возвращен, однако я не могу его получить.
{"auth_token": "ea6d13c7bc50feb46cf978d137bc01a2"}
Я ссылался на this link. Спасибо за вашу доброту.
////// ※ Обновление Jan4th PM2: 30
Я переписан код из «запроса вара ~~» следующим образом, а затем получить «Error», поэтому он выглядит как этот код возвращает urlData как ноль.
Если вы найдете, как решить проблему, пожалуйста, помогите мне.
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
//request.setValue(postLength, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
//request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
if (urlData != nil){
var responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!
let res = response as NSHTTPURLResponse!;
NSLog("Response code: %ld", res.statusCode);
if (res.statusCode >= 200 && res.statusCode < 300){
var responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!
NSLog("Response ==> %@", responseData);
}
}else{
NSLog("Error");
}
Вы пытались удалить заголовок 'Accept' и 'Content-Length' в запросе? – skyline75489
Не пробовал еще. Я попробую сейчас. – lalala
Какова содержимое переменной 'responseError'? переменная 'response'? – Mundi