使用Swift使用NSDictionary值发布方法

时间:2016-05-06 07:41:51

标签: ios swift nsurlconnection alamofire

我对Swift完全不熟悉。我需要点击带有NSDictionary参数&的Post Method webservice。得到JSON响应。我尝试使用Alamofire&还NSMutableUrlRequest。似乎没什么可以锻炼的。我得到'JSON文本没有从数组或对象开始,并且选项允许片段未设置'错误或来自服务器的'未定义变量'响应。当我尝试使用Objective-C时,相同的服务正常工作。正如我之前所说,我对Swift&需要你的帮助。

我的基本网址:http://myofficeit.in/bizfeed/webservices/client.php

参数我想通过:

参数=

{
    UserName = xyz;
    deviceModel = iPhone;
    deviceToken = "949264bc cd9c6c851ee64cc74db9078770dd7d971618ec20ce91d2e6eb9f155e";
    emailid = "xyz@gmail.com";
    location = Asia;
    userMobileNo = 1234567890;
};
functionName = register;

我用于点击服务的代码是:http://pastebin.com/aaT4uhS7

由于

2 个答案:

答案 0 :(得分:1)

你可以使用

let param: [String:AnyObject] = [
    "UserName": iPhone,
    "deviceToken": "949264bc cd9c6c851ee64cc74db9078770dd7d971618ec20ce91d2e6eb9f155e",
    "emailid": "xyz@gmail.com",
    "location": Asia,
    "userMobileNo": 1234567890
]

Alamofire.request(.POST, "http://myofficeit.in/bizfeed/webservices/client.php/register", parameters: param).responseJSON { (req, res, json, error) in
    print(req)
    print(res)
    print(json)
    print(error)
}

用于Alamofire

中的示例请求

答案 1 :(得分:0)

就你的问题而言,广泛将是我的答案:

要做的第一件事是要清楚地了解Web服务API,这也需要HTTP协议的基本知识。所以,您需要了解的是,服务器在HTTP术语中的期望。

您最终会发现,服务器将如何期待其"参数"。请注意,没有类似"参数"在HTTP协议中。因此,您需要将它们映射到HTTP协议提供的内容。

最有可能的是,在POST请求中,"参数"作为HTTP消息的正文传输,作为application/x-www-form-urlencodedmultipart/form-dataapplication/json的内容类型。

根据服务器的需求,以及您对HTTP和NSURLSessionNSURLComponents等的基本知识,您可以撰写请求的网址和正文,设置Content-Type标题和可能的其他标题,你准备好了。

@AnbyKarthik的答案给出了最终的结果,该答案使用了Alamofire,以及一个组成POST请求的命令,其参数在内容类型为x-www-form-urlencoded的正文中发送。