【问题标题】:How to send XML PUT/POST request using AFNetworking 2.5如何使用 AFNetworking 2.5 发送 XML PUT/POST 请求
【发布时间】:2015-01-23 19:06:46
【问题描述】:

无法弄清楚我需要如何指定 requestSerializer 以发送 XML 格式的请求。这是一个快速的例子:

var manager = AFHTTPRequestOperationManager()

manager.responseSerializer = AFXMLParserResponseSerializer()
manager.requestSerializer = AFHTTPRequestSerializer()

var parameters = "<regNumber>123</regNumber><pinNumber>234</pinNumber>"
var encodingParameters = parameters.dataUsingEncoding(NSUTF16StringEncoding)

manager.PUT("serviceurl", parameters: encodingParameters, success: {
   //....
},
        failure: {
            ///.....
        }
)

您可以看到现在我正在使用 AFHTTPRequestSerializer() - 但我不确定这是否正确。试图找到类似于 AFXMLParserResponseSerializer() 但用于请求的东西。

AFJSONRequestSerializer 可以正常工作,如下所示:

var manager = AFHTTPRequestOperationManager()

manager.responseSerializer = AFXMLParserResponseSerializer()
manager.requestSerializer = AFJSONRequestSerializer(writingOptions: NSJSONWritingOptions()) 

var parameters = ["regNumber": 123, "pinNumber": 234]

manager.PUT("serviceurl", parameters: parameters, success: {
       //....
    },
            failure: {
                ///.....
            }
    )

任何人都可以展示使用 AFNetworking 2.5 的 XML 请求的工作示例吗?

【问题讨论】:

    标签: ios swift serialization request afnetworking


    【解决方案1】:

    您可以像这样使用 AFHTTPRequestOperation 而不是 AFHTTPRequestOperationManager:

        let xmlString = "<regNumber>123</regNumber><pinNumber>234</pinNumber>"
        let xmlData = xmlString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
        let request = NSMutableURLRequest(URL: NSURL(string: "serviceurl")!)
        request.HTTPMethod = "POST"
        request.HTTPBody = xmlData
    
        let operation = AFHTTPRequestOperation(request: request);
    
        operation.setCompletionBlockWithSuccess({ (AFHTTPRequestOperation operation, AnyObject response) -> Void in
            //Response
    
        }, failure: { (AFHTTPRequestOperation operation, NSError    error) -> Void in
            println(error.localizedDescription)
        })
        operation.start()
    

    【讨论】:

    • 非常感谢!这就是我需要的!
    • 这是 obj-c 中的答案。它可能对某人有用:AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; self.manager.responseSerializer = [AFXMLParserResponseSerializer 序列化器]; [操作 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { //Response } 失败:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Failure"); }]; [操作开始];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多