Xcode

【Xcode】SwiftでJSON型のままPOSTリクエストを送る方法

2020-04-15

ソースコード

いきなりソースコードを記載します。

 

class ViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()

    let testurl = URL(string: "https://corona-medama0101873537.codeanyapp.com/device/")
        let request = NSMutableURLRequest(url: testurl!)

        // set the method(HTTP-POST)
        request.httpMethod = "POST"
        // set the header(s)
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")

        // set the request-body(JSON)
        let params: [String: Any] = [
            "testNumber": "123567",
        ]
//または以下のような記述
//        var params = Dictionary<String,String>()
//        params["testNumber"] = "123567"

        do{
            request.httpBody = try JSONSerialization.data(withJSONObject: params, options: [])
        }catch{
            print(error.localizedDescription)
        }

        // use NSURLSessionDataTask
        let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {data, response, error in
            if (error == nil) {
                let result = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)!
                print(result)
            } else {
                print(error as Any)
            }
        })
        task.resume()
  }
}

 

これで
{"testNumber":"123567"}
という形でPOSTリクエストが送られます

 

結論

 

JSON型のまま送ることは出来なさそうです
「request.httpBody = パラメータ」
という形で送る必要があるのですが、公式ドキュメント を見るとhttpBodyはData型のためJSON型で送ることは出来ないのではないかという結論です

新たな結論はPOST送信することができました

 

以上、今回はここまで!

-Xcode

© 2024 ITime