使用多部分表单url会话更新参数以及图像

如何解决使用多部分表单url会话更新参数以及图像

通过使用多部分urlsession尝试更新地址以及图像,图像已更新,但地址未更新。 / * let postDict:[String:String] = [“名称”:txtName.text !,“地址”:txtAddress.text!,“ countryPrefix”:“ +91”,“ phone”:txtPhone.text!]

             webSeviceCallUpdateProfile(parameter: postDict,paramName: "image",fileName: strImageName,image: imgViewProfile.image!)
    */ 

func webSeviceCallUpdateProfile(参数:[String:String],paramName:字符串,fileName:字符串,图像:UIImage){

                let url = URL(string: "http://www.example.com")
    
                // generate boundary string using a unique per-app string
                let boundary = UUID().uuidString
    
                let session = URLSession.shared
    
                // Set the URLRequest to POST and to the specified URL
                var urlRequest = URLRequest(url: url!)
                urlRequest.httpMethod = "POST"
    
               // let token : String =  UserDefaults.standard.string(forKey: "authToken") ?? ""
    
                // Set Content-Type Header to multipart/form-data,this is equivalent to submitting form data with file upload in a web browser
                // And the boundary is also set here
                urlRequest.setValue("multipart/form-data; boundary=\(boundary)",forHTTPHeaderField: "Content-Type")
                
    
                if let appVersion = UserDefaults.standard.value(forKey: "appVersion")
                {
                    urlRequest.addValue("\(appVersion)",forHTTPHeaderField: "App-Version")
                }
                urlRequest.addValue("updateProfile",forHTTPHeaderField: "Api-Name")
                if let userId = UserDefaults.standard.value(forKey: "userId")
                {
                    urlRequest.addValue("\(userId)",forHTTPHeaderField: "UserId")
                }
                if let authToken = UserDefaults.standard.value(forKey: "authToken")
                {
                    urlRequest.addValue("\(authToken)",forHTTPHeaderField: "AuthToken")
                }
    
    
                var formdata = Data()
    
                let body = NSMutableData()
    
            do {
                let jsonData = try JSONSerialization.data(withJSONObject: parameter,options: .prettyPrinted)
                formdata = jsonData
            } catch let error {
                print(error.localizedDescription)
            }
                     
                     
                       let lineBreak = "\r\n"
                       let boundaryPrefix = "--\(boundary)\r\n"
                       body.appendString(boundaryPrefix)
                       body.appendString("Content-disposition: form-data; name=\"\(parameter)\"\r\n")
                       body.appendString("Content-Type: \("application/json;charset=utf-8")\r\n\r\n")
                       body.append(formdata)
                       body.appendString("\r\n")
                       body.appendString("--\(boundary)--\(lineBreak)")
    
    
                // Add the image data to the raw http request data
                formdata.append("\r\n--\(boundary)\r\n".data(using: .utf8)!)
                formdata.append("Content-disposition: form-data; name=\"\(paramName)\"; filename=\"\(fileName)\"\r\n".data(using: .utf8)!)
                formdata.append("Content-Type: image/png\r\n\r\n".data(using: .utf8)!)
                formdata.append(image.pngData()!)
    
                formdata.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)
    
    
    
    
                // Send a POST request to the URL,with the data we created earlier
                session.uploadTask(with: urlRequest,from: formdata,completionHandler: { responseData,response,error in
                    if error == nil {
                        let jsonData = try? JSONSerialization.jsonObject(with: responseData!,options: .allowFragments)
                        if let json = jsonData as? [String: Any] {
                            print(json)
                            if let jsonStatus = json["status"]
                            {
                                let status = jsonStatus as! Int
                                if status == 1
                                {
                                    if let response = json["response"] as? [String:Any]
                                    {
                                        if response["userId"] != nil
                                        {
                                            if let membership =  response["membership"]
                                            {
                                                UserDefaults.standard.set(membership,forKey: "membership")
                                            }
                                            if let name = response["name"]
                                            {
                                                UserDefaults.standard.set(name,forKey: "name")
                                            }
    
                                            if let image = response["image"] as? String,image.count > 0
                                            {
                                                SDImageCache.shared.clearMemory()
                                                SDImageCache.shared.cleardisk()
                                                print(image)
                                                UserDefaults.standard.set(image,forKey: "profilePicture")
                                            }
                                        }
                                    }
                                }
                            }
                            dispatchQueue.main.async {
                                let message = json["message"] as! String
                                self.showAlert(title: "Success",message: message)
                            }
    
                        }
                    }
    
                   
                }).resume()
            }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?