2015-04-23 29 views
2

我想從服務器獲得json響應,但收到了我下面粘貼的錯誤。不過api調用在postman.please上可以正常工作,請問您是否可以建議解決方案我在這裏做錯了API不會以原始數據返回有效的響應。但在郵遞員上工作得很好

可選(錯誤域= NSURLErrorDomain代碼= -1012 「該操作不能完成。(NSURLErrorDomain錯誤-1012。)」 的UserInfo = 0x7f9050e1f750 {NSErrorFailingURLStringKey = https://rainforestcloud.com:9445/cgi-bin/post_manager,NSUnderlyingError = 0x7f9050fe4eb0「無法完成的操作。(kCFErrorDomainCFNetwork error -1012。)「,NSErrorFailingURLKey = https://rainforestcloud.com:9445/cgi-bin/post_manager})

這裏是我的代碼

var theRequest : NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: base_url)!) 
    theRequest.HTTPMethod = "POST" 
    theRequest.setValue("text/html", forHTTPHeaderField: "Content-Type") 
    theRequest.addValue("Cloud-ID", forHTTPHeaderField: "001226") 
    theRequest.addValue("User", forHTTPHeaderField: "[email protected]") 
    theRequest.addValue("Password", forHTTPHeaderField: "rainforest") 
    var stringData = "confirm_message"; 
    var requestBodyData = stringData.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) 
    theRequest.HTTPBody = requestBodyData; 
    var response: NSURLResponse? 
    var error: NSError? 
    let urlData = NSURLConnection.sendSynchronousRequest(theRequest, returningResponse: &response, error: &error) 
    if ((error) != nil) 
    { 
     println(error) 

    } 
    else 
    { 
     self.performSegueWithIdentifier("MeterView", sender: self) 
    } 
    theRequest.timeoutInterval = 0.20 

postman api call images here Response image

+0

谷歌的問題第一.. –

回答

0

theRequest.addValue( 「雲ID」,forHTTPHeaderField: 「001226」)

我這個要求我以錯誤的方式插入值,我不得不將值「Cloud-ID」與「001226」交換後,現在我的json響應可以正常工作,並且非常完美。謝謝。

交換之後就變成

theRequest.addValue( 「001226」,forHTTPHeaderField: 「雲-ID」)

0

我有這樣的代碼來連接到REST API片段。它使用JSONValue,因爲我假設返回的值是JSON。

調用它的方式是

dataFromServer('file.php', ["parm1": "value1", "parm2": 2]) 

func dataFromServer(file:String, var parms:Dictionary<String, AnyObject!>) -> JSONValue { 


    let url = "\(SERVERURL)/\(file)" 

    let request = NSMutableURLRequest() 
    request.URL = NSURL(string: url) 
    request.HTTPMethod = "POST" 

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

    request.addValue(contentType, forHTTPHeaderField: "Content-Type") 

    let body = NSMutableData() 

    for (key, value) in parms { 

     if value is UIImage { 
      //If uiimage 

      if let img = value as? UIImage { 

       var newWidth = 0 
       var newHeight = 0 
       var sizeLimit = 700 //in px 

       let originalWidth = Int(img.size.width) 
       let originalHeight = Int(img.size.height) 

       //Get new size with max w/h = 700 
       if originalWidth > originalHeight { 
        //Max width 
        newWidth = sizeLimit 
        newHeight = (originalHeight*sizeLimit)/originalWidth 
       }else{ 
        newWidth = (originalWidth*sizeLimit)/originalHeight 
        newHeight = sizeLimit 
       } 

       let newSize = CGSizeMake(CGFloat(newWidth), CGFloat(newHeight)) 
       UIGraphicsBeginImageContext(newSize) 
       img.drawInRect(CGRectMake(0, 0, CGFloat(newWidth), CGFloat(newHeight))) 
       let newImg = UIGraphicsGetImageFromCurrentImageContext() 
       UIGraphicsEndImageContext() 
       let imageData = UIImagePNGRepresentation(newImg) 

       body.appendData(("\r\n--\(boundary)\r\n" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
       body.appendData(("Content-Disposition: form-data; name=\"\(key)\"; filename=\"tempImage.png\"\r\n" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
       body.appendData(("Content-Type: application/octet-stream\r\n\r\n" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
       body.appendData(NSData(data: imageData)) 
      } 


     }else{ 

      body.appendData(("\r\n--\(boundary)\r\n" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
      body.appendData(("Content-Disposition: form-data; name=\"\(key)\";" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
      body.appendData(("\r\n\r\n" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
      body.appendData(("\(value)" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 
     } 
    } 

    body.appendData(("\r\n--\(boundary)\r\n" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) 

    request.HTTPBody = body 

    var urlData:NSData? 
    var response: NSURLResponse? 
    var error: NSError? 
    urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) 


    if let serverData = urlData { 
     if let data = response { 
      let aStr = NSString(data: serverData, encoding: NSUTF8StringEncoding) 
      let json = JSONValue(urlData) 
      println("Return \(file): \(aStr)") 
      return json 
     } 
    } 

    return JSONValue("") 
} 

我希望它能幫助

相關問題