2016-07-22 78 views
1

我在推送服務器上的視頻時遇到問題。我的API在正文中有兩個參數:詳細信息和文件,我必須通過標頭中的令牌對其進行授權。通過多部分表單數據在服務器上發送視頻

開始時我的文件已準備好並導出到我推送到方法的URL。接下來的細節(字符串值),我試圖準備發送到服務器上。

後,我跑我的應用我有此錯誤:在響應

Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}

服務器返回有關推動視頻的所有數據在JSON

我用這個教程來嘗試做一些第一步: https://mindfiremobile.wordpress.com/2014/01/27/upload-video-to-server-using-multiparts/

這是我在服務器上推送視頻的第一步,我很樂意提供幫助。

func postDetailsWithVideo(details: String, file: NSURL) { 
    let url = serverURL.URLByAppendingPathComponent("api/details") 

    let videoData = NSData.init(contentsOfURL: file) 

    let kBoundary = "---------------------------14737809831466499882746641449" 
    let kStartTag = "--%@\r\n" 
    let kEndTag = "\r\n" 
    let kContent = "Content-Disposition: form-data; name=\"%@\"\r\n\r\n" 

    let body = NSMutableData() 

    //details data 
    body.appendData(String(format: kStartTag, kBoundary).dataUsingEncoding(NSUTF8StringEncoding)!) 
    body.appendData(String(format: kContent, "storyDetails").dataUsingEncoding(NSUTF8StringEncoding)!) 
    body.appendData(details.dataUsingEncoding(NSUTF8StringEncoding)!) 
    body.appendData(String(format: kEndTag).dataUsingEncoding(NSUTF8StringEncoding)!) 

    //Video data 
    body.appendData(String(format: kStartTag, kBoundary).dataUsingEncoding(NSUTF8StringEncoding)!) 
    body.appendData("Content-Disposition: form-data; file=\"flv\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) 
    body.appendData("Content-Type: application/octet-stream\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) 
    body.appendData(NSData(data: videoData!)) 
    body.appendData(String(format: kEndTag).dataUsingEncoding(NSUTF8StringEncoding)!) 

    // close form 
    body.appendData("--\(kBoundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) 

    let contentType = "multipart/form-data; boundary=\(kBoundary)" 

    let request = NSMutableURLRequest(URL: url) 
    request.HTTPMethod = "POST" 
    request.setValue("Bearer \(DataManager().getAccessToken())", forHTTPHeaderField: "Authorization") 
    request.setValue(contentType, forHTTPHeaderField: "Content-Type") 
    request.HTTPBody = body 

    print(body) 

    postDataOnTheServer(request, apiMethod: "api/details") 

} 

func postDataOnTheServer(request: NSMutableURLRequest, apiMethod: NSString) { 
     let currentRequest = request 

     let task = NSURLSession.sharedSession().dataTaskWithRequest(currentRequest){ data, response, error in 
      if error != nil{ 
       self.delegate?.errorOccured(apiMethod, error: error!) 
       return 
      } 

      do { 
       let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject] 

       self.delegate?.serverResponseFromAPIMethod(apiMethod, result: result!) 

      } catch { 
       print("response - some error") 
       print(error) //do something with me 
      } 
     } 

     task.resume() 
    } 

回答

1

它是一個服務器問題。詢問你的後端不要回應任何事情,你會得到響應。

相關問題