【问题标题】:iOS : http Post using swiftiOS:使用 swift 的 http 发布
【发布时间】:2015-06-02 12:29:00
【问题描述】:

我在底部找到了解决方案

我正在尝试向我的服务器发出 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 : [QueryDict : {}]

我在这里缺少什么?任何帮助表示赞赏

解决方案:

我错误地将 content-value 设置为 application/json 而实际上它 不是 json 身体。删除它解决了问题

【问题讨论】:

  • 请求是 NSMutableURLRequest 还是 NSURLRequest?
  • 这是一个 NSMutableRequest
  • 您可以编辑您的问题以包括请求和会话的初始化吗?
  • 另外,您确定您正确检查服务器是否收到了 POST 请求?
  • 我编辑了我的帖子,我很确定我检查了 POST 请求

标签: ios swift http-post


【解决方案1】:

使用https://github.com/Alamofire/Alamofire

轻松联网 :)

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"
}

【讨论】:

    【解决方案2】:

    这是我在日志库中使用的方法: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)
    

    请参阅How to escape the HTTP params in Swift,了解如何将键值对正确编码到数据字符串中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      相关资源
      最近更新 更多