2016-12-15 9 views
1

In Verwendung von Swift 2.2, während der Verwendung von NSURLSession bekomme ich nicht die Antwort. Was mache ich falsch?Kein Ergebnis in NSURLSession in swift

Ich muss Parameter und Header in POST-Anfrage übergeben.

func API() { 

    let userName:String! = "uname" 
    let password:String! = "password" 

    let request = NSMutableURLRequest(URL: NSURL(string: URL)!) 
    request.HTTPMethod = "POST" 

    let data = try! NSJSONSerialization.dataWithJSONObject(parameter, options:[]) 
    let json = NSString(data: data, encoding: NSUTF8StringEncoding) as! String 
    request.HTTPBody = json.dataUsingEncoding(NSUTF8StringEncoding) 
    request.allHTTPHeaderFields = ["key":"value"] 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 
     guard error == nil && data != nil else {               // check for fundamental networking error 
      print("error=\(error)") 
      return 
     } 

     if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {   // check for http errors 
      print("statusCode should be 200, but is \(httpStatus.statusCode)") 
      print("response = \(response)") 
     } 

     let responseString = String(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString)") 
    } 
    task.resume() 

} 

Ergebnis ist:

responseString = Optional ("")

+0

Wenn Sie JSON senden wollen Sie den Header entsprechend eingestellt haben. – vadian

+0

Ich habe den Code aktualisiert, habe versucht, den Header zu senden, aber es funktioniert immer noch nicht – user7205007

Antwort

0

Haben rufen Sie diesen Dienst auf jedem REST-Client wie Postman? Ja, wenn und bekommen Antwort so versuchen, diese Linie ersetzen

request.allHTTPHeaderFields = ["key":"value"] 

mit diesem

request.setValue("value",forHTTPHeaderField:"Key") 

und stellen Sie alle Werte

+0

Ja, ich bekomme das Ergebnis vom Postboten. Und ich habe versucht zu ersetzen, was Sie geschrieben haben, leider immer noch keine Antwort bekommen. – user7205007

+0

welche Sprache verwenden als Backend> – Hosny

+0

Wenn Sie Postbote verwenden, können Sie Button namens "Code generieren" finden Sie werden Ihre Anfrage wurde mit mehr Sprachen geschrieben wählen Sie swift und finden was in Header-Wörterbuch – Hosny

Verwandte Themen