iOS:http使用swift进行发布
我想出了解决scheme的底部
我正在尝试向我的服务器发出HTTP发布请求。 这是我做的
var request : NSMutableURLRequest = NSMutableURLRequest(URL : NSURL(string : "myURL") let session : NSURLSession = NSURLSession.sharedSession() request.allHTTPHeaderFields = (headers as [NSObject : AnyObject]) request.HTTPShouldHandleCookies = true request.HTTPMethod = "POST" var postData = "frontend=iOS" request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always println(request.allHTTPHeaderFields) println(request.HTTPBody) let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in let json:JSON = JSON(data: data) println(json) onCompletion(json, error) }) task.resume()
这不是设置HTTPRequest.POST
我尝试将请求打印到服务器端的服务器上。 IT表示post是空的
POST:[QueryDict:{}]
我在这里错过了什么? 任何帮助表示赞赏
解答:
我错误地将内容值设置为application / json,实际上它不是json主体。 删除它解决了这个问题
使用https://github.com/Alamofire/Alamofire
简单的networking:)
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .response { (request, response, data, error) in println(request) println(response) println(error) }
你可以使用下面的所有内容。
public enum Method: String { case OPTIONS = "OPTIONS" case GET = "GET" case HEAD = "HEAD" case POST = "POST" case PUT = "PUT" case PATCH = "PATCH" case DELETE = "DELETE" case TRACE = "TRACE" case CONNECT = "CONNECT" }
下面是我在日志库中使用的方法: https : //github.com/goktugyil/QorumLogs
var url = NSURL(string: urlstring) var request = NSMutableURLRequest(URL: url!) request.HTTPMethod = "POST" request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type") request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding) var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true)
请参阅如何在Swift中转义HTTP参数,以便将键值对正确编码到数据string中。