取得した文字列を返すようにPOSTメソッドを作成するにはどうすればよいですか
func post(link:String,passedPostString:String) {
let request = NSMutableURLRequest(url: NSURL(string: link)! as URL)
request.httpMethod = "POST"
request.httpBody = passedPostString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
if error != nil {
print("error=\(String(describing: error))")
print("******Error*****")
return
}
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print(responseString!)
}
task.resume()
}
それから私はそれを次のように呼びます
var link = "link"
var passedPostString = "passedPostString"
print(post(link: link , passedPostString: passedPostString ))
取得した値を返します
非同期ネットワーク呼び出しを行う関数は、完了するまでに時間がかかる場合があるため、戻り値の型を持つことはできません。システムがフリーズして応答が返されるまで待つことは望ましくありません。それは目的に反します。
代わりに、次のようにリクエストが終了したときに呼び出される完了クロージャーで新しいパラメーターを追加できます。
func post(link:String,passedPostString:String, completion: @escaping (String?, Error?) -> Void) {
let request = NSMutableURLRequest(url: NSURL(string: link)! as URL)
request.httpMethod = "POST"
request.httpBody = passedPostString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
// Make sure there is no error, else..
guard error == nil else {
completion(nil, error)
return
}
let responseString = String(data: data!, encoding: String.Encoding.utf8)
completion(responseString, nil)
}
task.resume()
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加