iOS

ios - Session request

행복하게사는게꿈 2021. 2. 5. 12:20

Session request

 

func postSession() {
        print("현재 사이트 : \(Singleton.instance.currentSite)")
        print("현재 innerText : \(Singleton.instance.innerText)")
        print("현재 innerHtml : \(Singleton.instance.innerHTML)")
        
        let url = URL(string: Constants.SERVER_TICKET_URL)
        let param = "URL=\(Singleton.instance.currentURL)&FullContents=\(Singleton.instance.innerText)&MoreInfo=\(Singleton.instance.innerHTML)"
        let paramData = param.data(using: .utf8)
        
        
        var requestBodyComponents = URLComponents()
        requestBodyComponents.queryItems = [URLQueryItem(name: "URL", value: Singleton.instance.currentURL)
                                            ,URLQueryItem(name: "FullContents", value: Singleton.instance.innerText)
                                            ,URLQueryItem(name: "MoreInfo", value: urlEncode(str: Singleton.instance.innerHTML) )]
        
        print("URL : " , Singleton.instance.currentURL)
        print("FullConetents : ", Singleton.instance.innerText)
        print("MoreInfo : ", Singleton.instance.innerHTML)
        
        var request = URLRequest(url: url!)
        request.httpMethod = "POST"
        //request.httpBody = paramData
        request.httpBody = requestBodyComponents.query?.data(using: .utf8)
        
        
        request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.addValue("Bearer \(Singleton.instance.bundleObjectForKey(defaultName: Keys.ACCESSTOKEN))", forHTTPHeaderField: "Authorization")
        request.setValue(String(paramData!.count), forHTTPHeaderField: "Content-Length")
        
        
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            // 서버가 응답이 없거나 통신이 실패
            if let e = error {
                NSLog("An error has occured: \(e.localizedDescription)")
                return
            }
            // 응답 처리 로직
            print("Response Data=\(String(data: data!, encoding: .utf8)!)")
            
            DispatchQueue.main.async() {
                print("Response Data=\(String(data: data!, encoding: .utf8)!)")
                
                
                print("response = \(response)")
                
                let result = (String(data: data!, encoding: .utf8))!
                
                
                
                if let httpResponse = response as? HTTPURLResponse {
                    print("statusCode \(httpResponse.statusCode)")
                    print("respone : \(httpResponse)")
                    switch httpResponse.statusCode {
                    case 200:
                        let alert = UIAlertController(title: "성공", message: "my page로 이동하시겠습니까?", preferredStyle: UIAlertController.Style.alert)
                        let okAction = UIAlertAction(title: "예", style: .default) { (action) in
                            self.changeWebViewURL(urlStr: "\(Constants.SERVER_BASE_URL)/tickets/my")
                        }
                        let cancelAction = UIAlertAction(title: "아니오", style: .default) { (action) in
                        }
                        alert.addAction(okAction)
                        alert.addAction(cancelAction)
                        self.present(alert, animated: false, completion: nil)
                    default:
                        break
                    }
                }
                // 서버로부터 응답된 스트링 표시
            }
            
        }
        // POST 전송
        task.resume()
    }