如何在iOS swift 4中访问Magento Rest API

如何在iOS swift 4中访问Magento Rest API,swift,xcode,api,magento2,Swift,Xcode,Api,Magento2,我正在编写代码来发布来自Magento REST API的数据,用于IOS应用程序put get me错误。我尝试从登录和注册视图控制器在相同的代码得到我相同的错误 api Magento REST api。我成功地从api获取数据,但在api中发布数据时出错 self.internetConnectionChecker { (status) in if status{ KVNProgress.show(); let userLoginApi = "http://

我正在编写代码来发布来自Magento REST API的数据,用于IOS应用程序put get me错误。我尝试从登录和注册视图控制器在相同的代码得到我相同的错误 api Magento REST api。我成功地从api获取数据,但在api中发布数据时出错

    self.internetConnectionChecker { (status) in
    if status{
    KVNProgress.show();
    let userLoginApi = "http://3.85.198.62/4apps/rest/V1/integration/customer/token"
                    let parameters: Parameters = ["username": username, "password": password]
                    let header : HTTPHeaders = ["Content-Type": "application/json"]
                    Alamofire.request(userLoginApi, method: .post, parameters: parameters,  headers: header).responseObject {  (response: DataResponse<User>) in
                        KVNProgress.dismiss()
                         print(response.request?.url)
                        print(response.request?.allHTTPHeaderFields)
                        let json = try! JSONSerialization.jsonObject(with: response.data!, options: JSONSerialization.ReadingOptions.mutableContainers)
                        print(json)
                            DispatchQueue.main.async {
                                loginCallback(response.result.value!)}
                            self.maincontroller.SuccessMessage(title: "تسجيل الدخول", successbody: "")

The Output 
{
    message = "Decoding error: \nUnable to unserialize value. Error: Syntax error\n#0 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Json.php(64): Magento\\Framework\\Serialize\\Serializer\\Json->unserialize('password=Abc%40...')\n#1 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Webapi/Rest/Request.php(141): Magento\\Framework\\Webapi\\Rest\\Request\\Deserializer\\Json->deserialize('password=Abc%40...')\n#2 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Webapi/Rest/Request.php(199): Magento\\Framework\\Webapi\\Rest\\Request->getBodyParams()\n#3 /opt/bitnami/apache2/htdocs/4apps/app/code/Magento/Webapi/Controller/Rest/InputParamsResolver.php(97): Magento\\Framework\\Webapi\\Rest\\Request->getRequestData()\n#4 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magento\\Webapi\\Controller\\Rest\\InputParamsResolver->resolve()\n#5 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->___callParent('resolve', Array)\n#6 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#7 /opt/bitnami/apache2/htdocs/4apps/generated/code/Magento/Webapi/Controller/Rest/InputParamsResolver/Interceptor.php(26): Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->___callPlugins('resolve', Array, Array)\n#8 /opt/bitnami/apache2/htdocs/4apps/app/code/Magento/Webapi/Controller/Rest/SynchronousRequestProcessor.php(85): Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->resolve()\n#9 /opt/bitnami/apache2/htdocs/4apps/app/code/Magento/Webapi/Controller/Rest.php(188): Magento\\Webapi\\Controller\\Rest\\SynchronousRequestProcessor->process(Object(Magento\\Framework\\Webapi\\Rest\\Request\\Proxy))\n#10 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magento\\Webapi\\Controller\\Rest->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#11 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magento\\Webapi\\Controller\\Rest\\Interceptor->___callParent('dispatch', Array)\n#12 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\\Webapi\\Controller\\Rest\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n#13 /opt/bitnami/apache2/htdocs/4apps/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(26): Magento\\Webapi\\Controller\\Rest\\Interceptor->___callPlugins('dispatch', Array, Array)\n#14 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/App/Http.php(137): Magento\\Webapi\\Controller\\Rest\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#15 /opt/bitnami/apache2/htdocs/4apps/generated/code/Magento/Framework/App/Http/Interceptor.php(24): Magento\\Framework\\App\\Http->launch()\n#16 /opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/App/Bootstrap.php(261): Magento\\Framework\\App\\Http\\Interceptor->launch()\n#17 /opt/bitnami/apache2/htdocs/4apps/index.php(39): Magento\\Framework\\App\\Bootstrap->run(Object(Magento\\Framework\\App\\Http\\Interceptor))\n#18 {main}";
    trace = "<null>";
}
self.internetConnectionChecker{(状态)在
如果状态{
KVNProgress.show();
让userLoginApi=”http://3.85.198.62/4apps/rest/V1/integration/customer/token"
let参数:parameters=[“用户名”:用户名,“密码”:密码]
let header:HTTPHeaders=[“内容类型”:“应用程序/json”]
请求(userLoginApi,方法:.post,参数:参数,头:头)。响应对象{(响应:DataResponse)在
KVNProgress.disclose()
打印(response.request?.url)
打印(响应.请求?.allHTTPHeaderFields)
让json=try!JSONSerialization.jsonObject(带有:response.data!,选项:JSONSerialization.ReadingOptions.mutableContainers)
打印(json)
DispatchQueue.main.async{
loginCallback(response.result.value!)文件
self.maincontroller.SuccessMessage(标题:“成功体:”)
输出
{
message=“解码错误:\n无法取消序列化值。错误:语法错误\n#0/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Json.php(64):Magento\\Framework\\Serialize\\Serializer\\Json->取消序列化('password=Abc%40…)\n#1/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Webapi/Rest/Request.php(141):Magento\\Framework\\Webapi\\Rest\\Request\\Deserializer\\Json->反序列化('password=Abc%40…')\n#2/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Webapi/Rest/Request.php(199):Magento\\Framework\\Webapi\\Rest\\Request->getBodyParams()\n\n\3/opt/bitnami/apache2/htdocs/4apps/app/code/Magento/Webapi/Controller/Rest/inputpramsresolver.php(97):Magento\\Framework\\Webapi\\Rest\\Request->getRequestData()\n\n#4/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interceptor.php(58):Magento\\Webapi\\Controller\\Rest\\InputParamsResolver->resolve()\n#5/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interceptor/Interceptor.php(138):Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->\uu callParent('resolve',数组)\n#6/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(153):Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->Magento\\Framework\\Interception\{closure}()\n#7/opt/bitnami/apache2/htdocs/4apps/generated/code/Magento/Webapi/Controller/Rest/InputParamsResolver/Interceptor.php(26):Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->callPlugins('resolve',Array,Array)\n\8/opt/bitnami/apache2/htdocs/4apps/app/code/Magento/Webapi/Controller/Rest/SynchronousRequestProcessor.php(85):Magento\\Webapi\\Controller\\Rest\\InputParamsResolver\\Interceptor->\n#9/opt/bitnami/apache2/htdocs/4apps/app/code/Magento/Webapi/Controller/Rest.php(188):Magento\\Webapi\\Controller\\Rest\\SynchronousRequestProcessor->process(对象(Magento\\Framework\\Webapi\\Rest\\Request\\Proxy))\n#10/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Framework/Interception/Interceptor.php(58):Magento\\Webapi\\Controller\\Rest->dispatch(对象(Magento\\Framework\\App\\Request\\Http))\n#11/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/Interception/Interceptor.php(138):Magento\\Webapi\\Controller\\Rest\\Interceptor->\uuuuuuuuu callParent('dispatch',Array)\n#12/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/intercepton/Interceptor.php(153):Magento\\Webapi\\Controller\\Rest\\Interceptor->Magento\\Framework\\intercepton\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n#13/opt/bitnami/apache2/htdocs/4apps/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(26):Magento\\Webapi\\Controller\\Rest\\Interceptor->\uuuuuu callPlugins('dispatch',Array,Array)\n#14/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/App/Http.php(137):Magento\\Webapi\\Controller\\Rest\\Interceptor->dispatch(对象(Magento\\Framework\\App\\Request\\Http))\n#15/opt/bitnami/apache2/htdocs/4apps/generated/code/Magento/Framework/App/Http/Interceptor.php(24):Magento\\Framework\\App\\Http->launch()\n#16/opt/bitnami/apache2/htdocs/4apps/lib/internal/Magento/Framework/App/Bootstrap.php(261):Magento\\Framework\\App\\App\\Http\\Interceptor->launch()\n#17/opt/bitnami/apache2/htdocs/4apps/index.php(39):Magento\\Framework\\App\\Bootstrap->run(对象(Magento\\Framework\\App\\Http\\Interceptor))\n#18{main}”;
trace=“”;
}

您看到的错误发生在Magento端
解码错误:\n无法取消序列化值…
它指出了取消序列化JSON参数的问题。因此,我尝试对Alamofire请求和
URLEncoding进行编码。queryString
适合我。这是我的代码

Alamofire.request(userLoginApi, method: .post, parameters: parameters, encoding: URLEncoding.queryString, headers: header).responseData {  (response: DataResponse<Data>) in
    let json = try! JSONSerialization.jsonObject(with: response.data!, options: JSONSerialization.ReadingOptions.mutableContainers)
    print("json", json)
}
Alamofire.request(userLoginApi,方法:.post,参数:参数,编码:URLEncoding.queryString,头:头)。响应数据{(响应:DataResponse)在
让json=try!JSONSerialization.jsonObject(带有:response.data!,选项:JSONSerialization.ReadingOptions.mutableContainers)
打印(“json”,json)
}

<代码> > Alamofire版本?你可以共享<代码>用户<代码>代码吗?pod‘alAMOFRAE’POD’alAMOFIOR ObjutsMePalter’,“~~ 5.2”导入基础导入对象映射器类用户:NStObjor,NSCODEL,可映射{var地址:[AyObjult]?var createdAt:String?var createdIn:String?var disableAutoGroupChange:Int?var email:String?var exte