2016-01-11 3 views
0

Я пытаюсь использовать функцию POST для получения текста с ярлыка и отправки его по электронной почте. Проблема в том, что всякий раз, когда я пытаюсь использовать текст с этикетки, единственными данными в этом письме являются: []HTTP POST function

Любые идеи относительно того, что может быть неправильным?

Код:

func postToServerFunction() { 
     var userText : String = labelText.text! 
     var url: NSURL = NSURL(string: "http://www.webaddress.com/email_test.php")! 
     var request:NSMutableURLRequest = NSMutableURLRequest(URL:url) 
     var bodyData = userText 
     request.HTTPMethod = "POST" 
     request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding); 
     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
      { 
       (response, data, error) in 
       println(response) 

     } 
    } 

Edit:

С помощью этого кода теперь я получаю { ""} в электронной почте:

func postToServerFunction() { 
    var emailText = labelText 
    var url: NSURL = NSURL(string: "http:www.webaddress.com/email_test.php")! 
    var request:NSMutableURLRequest = NSMutableURLRequest(URL:url) 
    var bodyData = "\(emailText)" 
    request.HTTPMethod = "POST" 
    request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding); 
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
     { 
      (response, data, error) in 
      println(response) 

    } 
} 
+0

«Данные», вероятно, содержат ответы на запрос. Вероятно, проверьте это, перейдя на строку – Tcharni

+0

. Я довольно новичок в быстром, вы можете показать мне, как это сделать? – w84u2cy

ответ

0

Этот API является устаревшим в iOS9. Вероятно, самый простой способ сделать это - использовать Alamofire (https://github.com/Alamofire/Alamofire)

Если вы все еще хотели использовать этот API, то вы должны использовать объект data.

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
    { 
     (response, data, error) in 
     let strData = String(data, NSUTF8StringEncoding) 
     print(strData) 
    } 

Таким образом, вы инициируете экземпляр строки из возвращаемых NSData.

0

Пожалуйста, не используйте NSURLConnection, как указано другим, это устарело. Если вы не хотите зависеть от внешних библиотек (Alamofire), используйте вместо этого NSURLSession.

guard let url = NSURL(string: "http://www.webaddress.com/email_test.php") else { 
    print("bad url") 
    return 
} 

let session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration()) 
let request = NSMutableURLRequest(URL:url) 
request.HTTPMethod = "POST" 
request.HTTPBody = "Some Text".dataUsingEncoding(NSUTF8StringEncoding); 

let post = session.dataTaskWithRequest(request) { data, response, error in 

    guard let data = data, let response = response where error == nil else { 
     print("Connection error") 
     return 
    } 

    let strData = String(data, NSUTF8StringEncoding) 
    print(strData) 
} 

post.resume() 
+0

Мне нужен быстрый 2.0 для этого права? – w84u2cy

+0

для 'guard' да, но вы также можете использовать условную привязку' if let something = ... 'в swift 1.x – tmpz

+0

Извините за поздний ответ, был в отъезде. Я пробовал ваш код, но все еще может иметь [] в теле письма. Какие решения вы можете придумать? @tmpz – w84u2cy