gpt4 book ai didi

objective-c - Swift(或 objective-c)相当于 curl 请求

转载 作者:可可西里 更新时间:2023-11-01 02:26:21 25 4
gpt4 key购买 nike

我想将以下 curl 请求处理成 swift(或 objective-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)
}

如果登录成功,会返回一个token,但是我获取不到。

{"auth_token": "ea6d13c7bc50feb46cf978d137bc01a2"}

我提到了 this link .谢谢你的好意。

//////※1月4日PM2:30更新

我重写了“var request~~”的代码如下,然后得到“Error”,因此看起来这段代码返回 urlData 为 nil。

如果你能找到解决问题的方法,请帮助我。

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");
}

最佳答案

我已经通过使用 NSURLSession 代表 NSURLConnection 获得了授权 token ,但是我仍然不确定为什么可以使用 NSURLSession 而不能使用 NSURLConnection。如果你有想法,请告诉我。谢谢你的好意。

func authentication2(){
let request = NSMutableURLRequest(URL: NSURL(string: "https://~~~/v2/authenticate/api")!)
request.HTTPMethod = "POST"

var loginID = "mylogin_id"
var apiKey = "myapi_key"
var postString:NSString = "login_id=\(loginID)&api_key=\(apiKey)"

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in

if error != nil {
println("error=\(error)")
return
}

println("response = \(response)")

let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString)")
}
task.resume()
}

关于objective-c - Swift(或 objective-c)相当于 curl 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com