Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法识别正文后的值_Ios_Iphone_Swift_Post_Swift3 - Fatal编程技术网

Ios 无法识别正文后的值

Ios 无法识别正文后的值,ios,iphone,swift,post,swift3,Ios,Iphone,Swift,Post,Swift3,我正在调用POST API,但POST值未被识别。 我正在使用alamofire进行API处理 public func POSTRequest(postData : AnyObject?,APIName : String?,headers: HTTPHeaders?,success:@escaping (JSON) -> Void, failure:@escaping (String,String) -> Void) { let url =

我正在调用POST API,但POST值未被识别。 我正在使用alamofire进行API处理

 public func POSTRequest(postData : AnyObject?,APIName : String?,headers: HTTPHeaders?,success:@escaping (JSON) -> Void, failure:@escaping (String,String) -> Void)
        {
            let url = URL(string: APIName!)!
            var urlRequest = URLRequest(url: url)

        urlRequest.httpBody = postData as? Data
        urlRequest.httpMethod = "POST"
        urlRequest.allHTTPHeaderFields = headers

        let manager = Alamofire.SessionManager.default
        manager.session.configuration.timeoutIntervalForRequest = 30.0
        manager.request(urlRequest).responseJSON { ( responseData) -> Void in

            if responseData.result.isSuccess {
                let statusCode = responseData.response?.statusCode
                if(statusCode == 200){
                    let resJson = JSON(responseData.result.value!)
                    success(resJson)
                }
                else {
                    let resJson = JSON(responseData.result.value!)
                    let errorMsg = resJson["message"].stringValue
                    let errorTitle = resJson["title"].stringValue
                    failure(errorMsg,errorTitle)
                }
            }
            if responseData.result.isFailure {
                let error : Error = responseData.result.error!
                failure(error.localizedDescription,"")
            }
        }
    }



// MARK: Login
    func userLogin(postData: AnyObject, completionHandler:@escaping (JSON) -> Void,failure:@escaping (String,String) -> Void)
    {
        let apiName = GlobalConstants.rootUrl + GlobalConstants.loginUrl

        let httpHeaders: HTTPHeaders = getHeaders()

        ApiRequestHandler.shared.POSTRequest(postData: postData, APIName: apiName, headers: httpHeaders, success: { (JSON) in
            print("JSON \(JSON)")
            completionHandler(JSON)
        })
        { (Errormsg,ErrorTitle) in
            print("Error \(Errormsg)")
            failure(Errormsg,ErrorTitle)
        }
    }
我正在这里创建post数据

        let postDataDct = NSMutableDictionary()
        postDataDct.setValue(self.userNameTextField.text, forKey: "username")
        postDataDct.setValue(self.phoneNumberTextField.text, forKey: "mobile")

        guard let data = try? JSONSerialization.data(withJSONObject: 
        postDataDct , options: JSONSerialization.WritingOptions.prettyPrinted) 
        as NSData else {
            return;
        }
        print(NSString(data: data as Data, encoding: 
        String.Encoding.utf8.rawValue)! as String)
在此处创建标题

func getHeaders() -> HTTPHeaders {
    let headers: HTTPHeaders = ["Content-Type": "application/json" ,"Authorization" : "Basic dGFuaXNocWdfgaFF%waXJvb3Q6dzBEMFlkSnR0"]
    return headers
}
我在这里调用登录方法

   ApiManager.shared.userLogin(postData: postDataDct as AnyObject, completionHandler: { (JSON) in
      print(JSON)
    })
    { (ErrorMsg, ErrorTitle) in
        print(ErrorMsg)
    }
请帮我找出问题所在


API给我错误响应,说用户名或密码为空。

交叉检查您的密钥:

let postDataDct = NSMutableDictionary()
postDataDct.setValue(self.userNameTextField.text, forKey: "username")
postDataDct.setValue(self.phoneNumberTextField.text, forKey: "mobile")
您正在使用
用户名
手机
发出请求。根据您得到的响应姓名或密码为空,密钥似乎将是
用户名
密码。

let postDataDct = NSMutableDictionary()
postDataDct.setValue(self.userNameTextField.text, forKey: "username")
postDataDct.setValue(self.phoneNumberTextField.text, forKey: "password")
建议:

不要在Swift中使用NSMutableDictionary,请使用其本机Swift 对应词,字典


交叉检查您的密钥:

let postDataDct = NSMutableDictionary()
postDataDct.setValue(self.userNameTextField.text, forKey: "username")
postDataDct.setValue(self.phoneNumberTextField.text, forKey: "mobile")
您正在使用
用户名
手机
发出请求。根据您得到的响应姓名或密码为空,密钥似乎将是
用户名
密码。

let postDataDct = NSMutableDictionary()
postDataDct.setValue(self.userNameTextField.text, forKey: "username")
postDataDct.setValue(self.phoneNumberTextField.text, forKey: "password")
建议:

不要在Swift中使用NSMutableDictionary,请使用其本机Swift 对应词,字典


为了发布Alamofire有自己的参数类,请尝试像在服务器上一样使用与make share相同的键

let parameter: Parameters = [
        "Email": txtfld_email.text!,
        "Password": txtfld_password.text!    
                              ]

为了发布Alamofire有自己的参数类,请尝试像在服务器上一样使用与make share相同的键

let parameter: Parameters = [
        "Email": txtfld_email.text!,
        "Password": txtfld_password.text!    
                              ]


您能在调用登录方法的位置添加代码吗?@vijeesh错误表示用户名或密码为空。变量PATDATADCT具有您所设置的参数,它只具有“用户名”和“移动”字段,而没有密码字段。您可以添加总的POST数据函数吗?使用
字典
字符串
数据
。能否在调用登录方法的位置添加代码?@vijeesh错误表明用户名或密码为空。变量PATDATADCT具有您所设置的参数,它只具有“用户名”和“移动”字段,而没有密码字段。您可以添加总的POST数据函数吗?使用
字典
字符串
数据
。不要在Swift中使用
NSMUTABLEDDICTIONARY
,请使用其本机Swift对应的
字典
。是的,也感谢您的提醒,这里我只展示相关问题的问题!而不仅仅是解决OP代码的一个问题,您应该始终尝试解决所有问题,而不是鼓励OP继续使用不应该使用的代码,在您的答案中显示相同的不推荐方法。您完全正确,但我想提醒您,我们可以给出建议,因为这不是本项目中的唯一代码,他在整个项目中使用相同的代码按照习惯,您只能修复这段代码,但是,如何修复所有代码?所以最好是这个给建议!!!此外,如果我根据本地Swift对应项修复代码,可能会给他带来问题!不要在Swift中使用
NSMutableDictionary
,请使用其本机Swift对应的
Dictionary
。是的,也感谢您的提醒,这里我只展示相关问题的问题!而不仅仅是解决OP代码的一个问题,您应该始终尝试解决所有问题,而不是鼓励OP继续使用不应该使用的代码,在您的答案中显示相同的不推荐方法。您完全正确,但我想提醒您,我们可以给出建议,因为这不是本项目中的唯一代码,他在整个项目中使用相同的代码按照习惯,您只能修复这段代码,但是,如何修复所有代码?所以最好是这个给建议!!!此外,如果我根据本地Swift对应项修复代码,可能会给他带来问题!我认为API只支持表单数据。我认为API只支持表单数据。