2016-11-18 67 views
0

我在我的应用程序中使用Alamofire进行网络连接。在Alamofire中,我正在编写POST方法将值传递给url,但它没有传递任何值。显示为空。以下是我的代码:Alamofire POST方法不会将值传递给url

let parameters = ["username": "\(textField.text)"] 
let urlString = "**Some URL**" 
Alamofire.request(.POST, urlString, parameters: parameters, encoding: .JSON).responseJSON { response in 
    guard response.result.error == nil else { 
     print("error calling POST on email API") 
     print(response.result.error!) 
     return 
    } 

    if let value = response.result.value { 
     print("The email is: \(value)") 
    } 
} 

如果有人得到错误我做错了什么。谢谢!!

+0

您使用的是swift 2.x吗? –

+0

是的!我正在使用swift 2.3。 –

+0

什么是响应?你是从服务器或字符串获取json对象吗?校验! –

回答

4

您正在使用哪种版本的alamofire? 请使用URLEncoding.default而不是JSONEncoding.default。

+1

它已经排序,然后你发布答案 –

+0

Upvoted。一连几个小时一直在挠挠我的脑袋。 – onnoweb

0

尝试这样的:

设URL = NSURL(字符串:URLNAME)

令请求= NSMutableURLRequest(网址:网址!)

request.HTTPMethod = “POST”

request.setValue(“application/json”,forHTTPHeaderField:“Content-Type”)

let data = try! NSJSONSerialization.dataWithJSONObject(参数!选项:NSJSONWritingOptions.PrettyPrinted)

让JSON = NSString的(数据:数据,编码:NSUTF8StringEncoding) 如果让JSON = JSON { 打印(JSON) }

 request.HTTPBody = json!.dataUsingEncoding(NSUTF8StringEncoding); 


      Alamofire.request(request) 
       .responseString { response in 
        // do whatever you want here 
        print(response.result) 
        switch (response.result) { 
        case .Success(let JSON): 
         print(JSON) 
        case .Failure: break 

        } 
      } 
+0

这不是'responseString'的问题。这是编码问题。 –

+0

是的。但这是在Alamofire中传递参数的正确方法.... –

+0

这不是什么像.aamofire有编码参数几乎每个类型从Json查询字符串形成数据 –

0

荫与swift2.3工作,我使用Alamofire ..它的工作对我来说:

class APIUtils: NSObject{static func fetchData(requestModel:RequestModel,completionBlock:(response:ResponseModel)->Void){ 

    let url = "\(requestModel.baseUrl)\(requestModel.apiUrl)" 

    Alamofire.request(APIUtils().getHTTPMethod(requestModel.httpMethodType), url, parameters: requestModel.parametersDict,headers:requestModel.headersDict,encoding:(APIUtils().getEncodingFormat(requestModel.encodeType))).responseJSON { (responseObj) -> Void in 

     let responseModel = ResponseModel() 
     responseModel.responseCode = responseObj.response?.statusCode 

     switch responseObj.result { 
      case .Success(let data): 
       if (data .isKindOfClass(NSDictionary)){ 
        responseModel.responseDictionary = data as! NSDictionary 
       }else if (data .isKindOfClass(NSArray)){ 
        responseModel.customModel = data as! NSArray 
       } 
       responseModel.isSuccess = true 
       break 

      case .Failure(let error): 

       responseModel.isSuccess = false 

       print("Request failed with error: \(error)") 
       break 
     } 

     completionBlock(response: responseModel) 
    } 
} 

func getHTTPMethod(methodType:HTTPMethodType)->Alamofire.Method{ 
    switch(methodType){ 
     case .GET: return Alamofire.Method.GET 
     case .POST: return Alamofire.Method.POST 
     case .PUT: return Alamofire.Method.PUT 
     case .PATCH: return Alamofire.Method.PATCH 
     case .DELETE: return Alamofire.Method.DELETE 

    } 
} 
func getEncodingFormat(methodType:encodingType)->Alamofire.ParameterEncoding{ 
    switch(methodType){ 
    case .URL: return Alamofire.ParameterEncoding.URL 
    case .JSON: return Alamofire.ParameterEncoding.JSON 
    case .URLEncodedInURL: return Alamofire.ParameterEncoding.URLEncodedInURL 

    } 
} 

}

//试试这个:

let urlencode = Alamofire.ParameterEncoding 
    print(MyStrings.BaseURl+urlString) 
    Alamofire.request(action, MyStrings.BaseURl+urlString, headers: headers, parameters:urlParams, encoding: isBody == true ? urlencode.JSON : urlencode.URLEncodedInURL) 
     .validate(statusCode: 200..<300) 
     .responseJSON { responseO in 
      if (responseO.result.error == nil) { 
       let responseModel = ResponseModel() 
       responseModel.responseCode = responseO.response?.statusCode 

       switch responseO.result { 
       case .Success(let data): 
        if (data .isKindOfClass(NSDictionary)){ 
         responseModel.responseDictionary = data as! NSDictionary 
        }else if (data .isKindOfClass(NSArray)){ 
         responseModel.customModel = data as! NSArray 
        } 
        responseModel.isSuccess = true 
        break 
       case .Failure(let error): 
        responseModel.isSuccess = false 
        print("Request failed with error: \(error)") 
        break 
       } 
       completionBlock(response: responseModel) 
      } 
      else { 
       debugPrint("HTTP Request failed: \(responseO.result.error?.userInfo)") 
       let responseModel = ResponseModel() 
       responseModel.responseCode = responseO.response?.statusCode 
       responseModel.isSuccess = false 
       completionBlock(response: responseModel) 
      } 
    }