首页 文章

在swift中使用AFNetworking传递参数

提问于
浏览
0

What I did:-

1.我想使用 AFHTTPSessionManager 来呼叫服务

2.我想使用 POST 方法仅在 JSON 格式中传递参数,我也尝试将参数传递为 JSON 但我收到了 Bad Request

3.使用AFNetworking 3.0

我的代码: -

dict = ["email_id":user! , "password": pass!]

  do {
                jsonData = try NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted)
                // here "jsonData" is the dictionary encoded in JSON data
                 theJSONText = String(data: jsonData!,
                                           encoding: NSASCIIStringEncoding)
                print("json string = \(theJSONText)")


            } catch let error as NSError {
                print(error)
            }



     manager.POST(urlString, parameters: theJSONText as String!, success:
                {
                    requestOperation, response in

                    let result = NSString(data: response as! NSData, encoding: NSUTF8StringEncoding)!

                    print(result)
                },
                         failure:
                {
                    requestOperation, error in
                    //let result = NSString(data: error as! NSData, encoding: NSUTF8StringEncoding)!

                    print(error)

            })

我想做什么: - 我想将参数作为JSON格式传递

Printing description of theJSONText:
"{\n  \"email_id\" : \"bbh\",\n  \"password\" : \"vh\"\n}"

转换为JSON STRING之后,我也没有使用JSON格式

请帮我这样做..

1 回答

  • 0

    从代码中删除以下行,

    theJSONText = String(data: jsonData!,
                                           encoding: NSASCIIStringEncoding)
                print("json string = \(theJSONText)")
    

    在json序列化中将选项设置为 0 而不是 NSJSONWritingOptions.PrettyPrinted

    并将 jsonData (作为数据)作为参数而不是 theJSONText 传递 .

    Update :

    试试这样,

    let urlString = "http://example.com/file.php"
     let dictionary = ["key1": [1,2,3], "key2": [2,4,6]]
    
    var error: NSError?
     let data = NSJSONSerialization.dataWithJSONObject(dictionary, options: NSJSONWritingOptions.allZeros, error: &error)
    let jsonString = NSString(data: data!, encoding: NSUTF8StringEncoding)
    let parameters = ["data" :  jsonString!]
    
    let manager = AFHTTPSessionManager()
    manager.responseSerializer = AFHTTPResponseSerializer()
    manager.POST(urlString, parameters: parameters, success:
    {
        requestOperation, response in
    
        let result = NSString(data: response as! NSData, encoding: NSUTF8StringEncoding)!
    
        println(result)
    },
    failure:
    {
        requestOperation, error in
    })
    

    在这个例子中,响应是在字符串中,如果以json格式响应,那么你应该使用 nsjsonserialization 而不是字符串在json中序列化它

    希望这会有所帮助:)

相关问题