setHTTPMethod,setURL和setHTTPBody在哪里快速进入?

时间:2014-06-08 14:06:49

标签: ios swift

我正在尝试实现HTTP请求。

这是目标C实现

         NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:postData];

我从写作开始:

       let request = NSMutableURLRequest()
       request .setValue(postLength, forHTTPHeaderField: "Content-Lenght")
       request .setValue(application/json, forHTTPHeaderField: Accept)

1. json请求给我一个错误。

2.我无法将setURL和SetHTTPBody从目标C转换为swift。我找不到     这些选项。

任何帮助将不胜感激。 谢谢。

4 个答案:

答案 0 :(得分:12)

他们已成为财产。大多数带有单个参数的setter方法都已成为属性。

你的json系列的问题是你没有引用“接受”。

let request = NSMutableURLRequest()
request.url = url
request.HTTPMethod = "POST"
request.setValue(postLength, forHTTPHeaderField:"Content-Length")
request.setValue("application/json", forHTTPHeaderField:"Accept")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField:"Content-Type")
request.postBody = postData

答案 1 :(得分:6)

以下是我在swift中的表现:

  

var request:NSMutableURLRequest = NSMutableURLRequest()
  request.URL = NSURL(string:url)

     

request.HTTPMethod =“POST”

     

request.setValue(postLength,forHTTPHeaderField:“Content-Length”)

     

request.setValue(“application / json”,forHTTPHeaderField:“Content-Type”)

     

request.HTTPBody = jsonData

答案 2 :(得分:0)

   var request: NSMutableURLRequest?
    let HTTPMethod: String = "POST"
    var timeoutInterval: NSTimeInterval = 60
    var HTTPShouldHandleCookies: Bool = false

    request = NSMutableURLRequest(URL: url)
    request!.HTTPMethod = HTTPMethod
    request!.timeoutInterval = timeoutInterval
    request!.HTTPShouldHandleCookies = HTTPShouldHandleCookies


    let boundary = "----------SwIfTeRhTtPrEqUeStBoUnDaRy"
    let contentType = "multipart/form-data; boundary=\(boundary)"
    request!.setValue(contentType, forHTTPHeaderField:"Content-Type")
    var body = NSMutableData();


     let tempData = NSMutableData()
     let fileName = filenames + ".jpg" //"prueba.jpg"
     let parameterName = "userfile"


    let mimeType = "application/octet-stream"

    tempData.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    let fileNameContentDisposition = fileName != nil ? "filename=\"\(fileName)\"" : ""
    let contentDisposition = "Content-Disposition: form-data; name=\"\(parameterName)\"; \(fileNameContentDisposition)\r\n"
    tempData.appendData(contentDisposition.dataUsingEncoding(NSUTF8StringEncoding)!)
    tempData.appendData("Content-Type: \(mimeType)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    tempData.appendData(imageData)
    tempData.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)

    body.appendData(tempData)

    body.appendData("\r\n--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)

    request!.setValue("\(body.length)", forHTTPHeaderField: "Content-Length")
    request!.HTTPBody = body



    var vl_error :NSErrorPointer = nil
    var responseData  = NSURLConnection.sendSynchronousRequest(request,returningResponse: nil, error:vl_error)

    var results = NSString(data:responseData, encoding:NSUTF8StringEncoding)
    println("finish \(results)")

答案 3 :(得分:0)

I am calling the json on login button click

@IBAction func loginClicked(sender : AnyObject){

var request = NSMutableURLRequest(URL: NSURL(string: kLoginURL)) // Here, kLogin contains the Login API.

var session = NSURLSession.sharedSession()

request.HTTPMethod = "POST"

var err: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(self.criteriaDic(), options: nil, error: &err) // This Line fills the web service with required parameters.
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")       
var err1: NSError?
var json2 = NSJSONSerialization.JSONObjectWithData(strData.dataUsingEncoding(NSUTF8StringEncoding), options: .MutableLeaves, error:&err1 ) as NSDictionary


if(err) {
println(err!.localizedDescription)
}
else {
var success = json2["success"] as? Int
println("Succes: \(success)")
}
})

task.resume()
}

Here, I have made a seperate dictionary for the parameters.

var params = ["format":"json", "MobileType":"IOS","MIN":"f8d16d98ad12acdbbe1de647414495ec","UserName":emailTxtField.text,"PWD":passwordTxtField.text,"SigninVia":"SH"] as NSDictionary
return params
}