Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift(或objective-c)相当于curl请求_Objective C_Api_Swift_Curl_Http Post - Fatal编程技术网

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

Swift(或objective-c)相当于curl请求,objective-c,api,swift,curl,http-post,Objective C,Api,Swift,Curl,Http Post,我想将下面的卷曲请求模板化为swift(或objective-c) 以下是我写的 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 = NSUR

我想将下面的卷曲请求模板化为swift(或objective-c)

以下是我写的

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"}
我提到过。 谢谢你的好意

////// ※更新1月4日下午2: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");
    }
var请求:NSMutableURLRequest=NSMutableURLRequest(URL:URL)
request.HTTPMethod=“POST”
request.HTTPBody=postData
//request.setValue(postLength,forHTTPHeaderField:“内容长度”)
request.setValue(“application/x-www-form-urlencoded”,forHTTPHeaderField:“内容类型”)
//request.setValue(“application/json”,forHTTPHeaderField:“Accept”)
var REPORNSERROR:NSError?
var响应:nsurresponse?
变量urlData:NSData?=NSURLConnection.sendSynchronousRequest(请求、返回响应:&response、错误:&ResponseError)
if(urlData!=nil){
var responseData:NSString=NSString(数据:urlData!,编码:NSUTF8StringEncoding)!
让res=响应为NSHTTPURLResponse!;
NSLog(“响应代码:%ld”,res.statusCode);
如果(res.statusCode>=200&&res.statusCode<300){
var responseData:NSString=NSString(数据:urlData!,编码:NSUTF8StringEncoding)!
NSLog(“响应==>%@”,响应数据);
}
}否则{
NSLog(“错误”);
}

我通过代表NSURLConnection使用NSURLSession获得了身份验证令牌,但是我仍然不确定为什么可以使用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()
}

您是否已尝试删除请求中的“接受”和“内容长度”标题?尚未尝试。我现在将尝试。您的
responseError
变量的内容是什么<代码>响应变量?>Mundi响应为零,responseError为错误。
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()
}