вывод веб-сервиса не дает требуемый JSON в быстром использовании alamofire - PullRequest
0 голосов
/ 22 мая 2018

1)

Я новичок в использовании alamofire. Вот моя попытка использовать alamofire для проверки веб-службы там, где я ошибаюсь. Я сделал веб-службу входа в loginviewcontroller.swift следующим образом

let url="http://192.169.201.32:9000//users/authenticate"

        @IBAction func DoLogin(_ sender: AnyObject) {
            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)

                    }

            }

            if(login_button.titleLabel?.text == "Logout")
            {
                let preferences = UserDefaults.standard
                preferences.removeObject(forKey: "session")

                LoginToDo()
            }
            else{
                login_now(username:username_input.text!, password: password_input.text!)
            }

        }

print (response)

FAILURE

responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailu> reReason.jsonSerializationFailed (Ошибка домена = значение NSCocoaErrorDomain = около 3840 дюймов)символ 2. "UserInfo = {NSDebugDescription = Недопустимое значение вокруг символа 2.}))

print (response.result)

FAILURE

error with response status: 404

2)

Второй signUpviewcontroller.swift связан с контроллером представления signUp. В signUpViewController.swift код для веб-службы singUp выглядит следующим образом

  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 ")
                print(response)
                print("abcsign up 3")
                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)

                }

        }
    }    

print (ответ)

FAILURE

responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailu> reReason.jsonSerializationFailed (Ошибка

Domai)n = NSCocoaErrorDomain Code = 3840 «Недопустимое значение для символа 2.» UserInfo = {NSDebugDescription = Недопустимое значение для символа 2.}))

print (response.result)

ошибка со статусом ответа: 404

как я могу получить действительный ответ json?

Вы можете скачать проект по этой ссылке https://drive.google.com/file/d/1Q__ydaQ7o0fKcFHdq6ymkxh52IEf7hMK/view?usp=sharing Здесь на почтальонеAPI показывает требуемый JSON Out положил.

Sigin Up:

image1

image2

Логин:

image3

image4

предоставить параметры в теле.Вы можете добавить параметры json, преобразовывающие запрос json url, в публикацию. На вкладке ниже выделите тело, поместите параметры здесь, выбрав raw.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Глядя на скриншоты, которыми вы поделились, я обнаружил, что в вызове API есть 2 проблемы.

1) Измените кодировку с URLEncoding на JSONEncoding

2) Обновите ваш URL, избегая двойного // в запросе


Выполните следующие изменения:

    Alamofire.request(url,
                      method: .post,
                      parameters:["username":"andrews","password":"admin2"],
                      encoding: URLEncoding.default)

Кому:

    Alamofire.request(url,
                      method: .post,
                      parameters:["username":"andrews","password":"admin2"],
                      encoding: JSONEncoding.default) 

    let parameters = ["dob":"16-08-2017",
                      "email":"ali45324@heurixtics.com",
                      "firstName":"abdul",
                      "gender":"male",
                      "lastName":"hasmi",
                      "middleName":"rauf",
                      "password":"12345678",
                      "ssn":"1235"]
    Alamofire.request(url,
                      method: .post,
                      parameters:parameters,
                      encoding: JSONEncoding.default)

Также вам необходимо исправить URL-адреса вашего запроса:

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

К:

let url = "http://192.169.201.32:9000/users/authenticate"
let url = "http://192.169.201.32:9000/patient/signUp"
0 голосов
/ 22 мая 2018

попробуйте эту ссылку "http://192.169.201.32:9000/users/authenticate"

Я думаю, что у вас есть дополнительные /

404 Not Found означает, что проблема в ссылке Это ошибка страницы не найдена

...