Вызовы API POST Внезапная отправка сообщений об ошибках только в iOS - PullRequest
0 голосов
/ 26 января 2020

Я неожиданно начал получать сообщения об ошибках в вызовах API Working REST, в которых до сих пор все еще работало нормально.

Самое главное, что это была проблема не приложения, а всех приложений, которые были обработаны из спецификации One, указанной c сервер перестал работать.

Важное замечание:

  • Те же вызовы API по-прежнему отлично работают на Android приложениях, даже после тестирования на POSTMAN они по-прежнему работают нормально, но не на iOS только часть
  • В iOS Также проблема касается только вызовов API POST, вызовы GET API по-прежнему работают нормально

Сообщение об ошибке:

Печать описания ошибки: Ошибка домена = NSCocoaErrorDomain Code = 3840 «Недопустимое значение вокруг символа 0.» UserInfo = {NSDebugDescription = Недопустимое значение для символа 0.}

Вот что я пробовал до сих пор:

func doSignInAPICall(mEmailMobile: String, mPassword: String, completionhandler: @escaping CompletionHandler) {
    let request = NSMutableURLRequest(url: NSURL(string: mainAPIURL+LoginAPI)! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: timeoutTime)
    request.httpMethod = "POST"

    let boundary = NSString(format: "---------------------------14737809831466499882746641449")
    let contentType = NSString(format: "multipart/form-data; boundary=%@", boundary)
    request.addValue(contentType as String, forHTTPHeaderField: "Content-Type")

    let body = NSMutableData()

    // email_mobile
    body.append(NSString(format: "\r\n--\(boundary)\r\n" as NSString).data(using: String.Encoding.utf8.rawValue)!)
    body.append(NSString(format: "Content-Disposition: form-data; name=\"email_mobile\"\r\n\r\n" as NSString).data(using: String.Encoding.utf8.rawValue)!)
    body.append(NSString(format: mEmailMobile as NSString).data(using: String.Encoding.utf8.rawValue)!)

    // password
    body.append(NSString(format: "\r\n--\(boundary)\r\n" as NSString).data(using: String.Encoding.utf8.rawValue)!)
    body.append(NSString(format: "Content-Disposition: form-data; name=\"password\"\r\n\r\n" as NSString).data(using: String.Encoding.utf8.rawValue)!)
    body.append(NSString(format: mPassword as NSString).data(using: String.Encoding.utf8.rawValue)!)

    request.httpBody = body as Data

    constants().APPDEL.doStartSpinner()
    let session = URLSession.shared
    let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
        print(response?.debugDescription)
        if (error != nil) {
            constants().APPDEL.doStopSpinner()
            completionhandler(false)
        } else {
            do {
                if let json = try JSONSerialization.jsonObject(with: data!, options: [.mutableContainers, .fragmentsAllowed]) as? [String: Any] {
                    constants().APPDEL.doStopSpinner()
                    let mDict = (json["response"] as! NSArray).object(at: 0) as! NSDictionary
                    if (mDict.value(forKey: "status") as! String) == "true" {
                        completionhandler(true)
                    } else {
                        completionhandler(false)
                    }
                }
            } catch let error as NSError {
                print("Failed to load: \(error.localizedDescription)")
                constants().APPDEL.doStopSpinner()
            }
        }
    })
    dataTask.resume()
}

Важные замечания :

  • Те же API-интерфейсы Проект перенесен на другой сервер, и в этом случае приведенный выше код работает правильно
  • Я подтвердил с командой поддержки сервера и подтвердил, что он имеет нет проблем с SSL или уровнем безопасности, а также с HTTP-сервером безопасности
  • Даже мои живые проекты, которые запускались с теми же сообщениями об ошибках, которые уже есть в App Store
  • В iOS Также выдают входит только в вызовы POST API, вызовы GET API по-прежнему работают нормально

РЕДАКТИРОВАТЬ - БОЛЬШЕ ДЕТАЛЕЙ:

Необязательно ("\ n \ n403 Запрещено \ n \ n

Запрещено

\ n

У вас нет прав доступа к этому ресурсу.

\ n

Кроме того, при попытке использовать ErrorDocument для обработки запроса.

\ n \ n ")

Просьба SE предложить мне какое-то решение для этого.

Любые предложения или советы будут высоко оценены.

...