当前位置: 首页 > 知识库问答 >
问题:

“登录”和“注册”web服务没有使用alamofire在swift中提供所需的json输出

昝阳嘉
2023-03-14

1)

我是使用alamofire的新手。这里是我试图使用alamofire使Web服务检查我错在哪里。我在loginviewcontroller.swift中做了一个登录webservice,如下所示

let url="http://192.169.201.32:9000//users/authenticate"
    override func viewDidLoad() {
        super.viewDidLoad()

        Alamofire.request(url, method: .post, parameters:["username":"andrews","password":"admin2"], encoding: URLEncoding.default)
            .responseJSON { response in
                print("abcsign in")
                print(response)
                 print("abcsign in3")
                print(response.result)
                //to get status code
                if let status = response.response?.statusCode {
                    switch(status){
                    case 201:
                        print("example success")
                    default:
                        print("error with response status: \(status)")
                    }
                }
                //to get JSON return value
                if let result = response.result.value {
                    let JSON = result as! NSDictionary
                     print("abcsign in 2")
                    print(JSON)

                }

        }

打印(答复)

失败

responseSerializationFailed(Alamofire.AFError.ResponseSerializationFaileureReason.jsonSerializationFailed(错误域=NSCOCAERRORDOMAIN代码=3840“字符2周围的无效值”。“用户信息={NSDebugDescription=字符2周围的无效值。}))

print(response.result)

失败

响应状态错误:404

2)

第二个signUpviewcontroller.swiftsignUpviewcontroller.swift视图控制器相连。在signUpviewcontroller.swift中,挑选Web服务的代码如下

  let url="http://192.169.201.32:9000//patient/signUp"

    @IBAction func signUpButtonWasPressed(_ sender: Any) {
        Alamofire.request(url, method: .post, parameters:["dob":DateOfBirthTextFeild.text ,
                                                          "email":emailIdTextField.text ,
                                                          "firstName":FirstNameTextField.text ,
                                                          "gender":genderTextField.text ,
                                                          "lastName":LastNameTextField.text ,
                                                          "middleName":MiddleNameTextField.text ,
                                                          "password":passwordTextField.text ,    //password must be 8 char long 
                                                          "ssn":ssnTextField.text], encoding: URLEncoding.default)
            .responseJSON { response in
                print("abcsig up in")
                print(response)
                print("abcsign up in3")
                print(response.result)
                //to get status code
                if let status = response.response?.statusCode {
                    switch(status){
                    case 201:
                        print("example success")
                    default:
                        print("error with response status: \(status)")
                    }
                }
                //to get JSON return value
                if let result = response.result.value {
                    let JSON = result as! NSDictionary
                    print("abcsign up in 2")
                    print(JSON)

                }

        }
    }

打印(响应)输出为

失败

responseSerializationFailed(Alamofire.AFError.ResponseSerializationFaileureReason.jsonSerializationFailed(错误域=NSCOCAERRORDOMAIN代码=3840“字符2周围的无效值”。“用户信息={NSDebugDescription=字符2周围的无效值。}))

print(response.result) 

响应状态错误:404

如何获得有效的json响应?

共有2个答案

牧业
2023-03-14

您是否尝试使用json编码而不是url编码?我注意到,在postman中,您发送的请求以原始数据作为正文,并使用application/json

尝试如下更改Alamofire的请求方法:

Alamofire.request(url, method: .post, parameters:["username":"andrews","password":"admin2"], encoding: JSONEncoding.default) // instead of URLEncoding.default
丌官星渊
2023-03-14

我已经测试了邮递员相同的,见下面附上的图片。可能是验证URL或从支持的开发中验证的问题。因此,请提供更多信息,为您提供正确答案。

 类似资料:
  • 有许多文章指出在JPA/hibernate中不需要使用DTO 使用“在视图中打开会话”模式或严格的程序集阶段来避免未蚀刻数据的问题。Hibernate使开发人员不再编写繁琐的数据传输对象(DTO)。。。以上几行来自https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/best-practices.html 同样在SO成员Bohzo的一

  • 问题内容: 我想为一个wordpress网站创建移动应用。我已经集成了wordpress json插件 。我不确定在哪里可以找到用于用户注册和登录的服务。请指教。 问题答案: 要注册用户,这将通过仅调用url并使用GET Method 向其中添加数据的方式,向您确切显示如何在数据库中注册一个用户。现在,通过移动应用程序执行此操作,您只需向包含用户所需的所有数据的URL发出http请求即可。这将向您

  • 我找到了一些关于登录和注册的教程: http://www.baeldung.com/spring-security-login-error-handing-localization 如果我想用实现一个简单的登录和注册表单,有什么想法吗? 编辑:我在官方文档中找到了这个。这将完成登录功能,但注册呢?

  • 是否可以使用https协议在tomcat上部署apache cxf rs?我看到很多使用嵌入式jetty的例子,但我不想要它。 我应该在这里补充更多细节,我不知道具体怎么做。我有以下配置:在网络上。xml 在cxf-config.xml: 在服务器中也是如此。xml端口8443上启用了SSL,但我得到了一个例外:java。伊奥。IOException:端口8443的协议不匹配:引擎的协议是http