2016-11-18 1 views
0

내 응용 프로그램의 네트워킹에 Alamofire를 사용하고 있습니다. Alamofire에서는 url에 값을 전달하는 POST 메서드를 작성하지만 값을 전달하지는 않습니다. 님이 null을 표시하고 있습니다. 아래 코드는 다음과 같습니다.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

예! 나는 신속한 2.3을 사용하고있다. –

+0

응답은 어떻게됩니까? 서버 또는 문자열에서 json 객체를 가져오고 있습니까? 검증! –

답변

4

어떤 alamofire 버전을 사용하고 있습니까? JSONEncoding.default 대신 URLEncoding.default를 사용해보십시오. 이 같은

+1

이미 정렬 된 다음 대답을 게시했습니다 –

+0

Upvoted. 몇 시간 동안 내 머리를 긁적 거렸다. – onnoweb

0

보십시오 :

하자 URL = NSURL (문자열 : URLName의)

하자 요청 = NSMutableURLRequest (URL : 홈페이지!)

request.HTTPMethod = "POST"

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

let data = try! NSJSONSerialization.dataWithJSONObject (파라미터 !, 선택해 NSJSONWritingOptions.PrettyPrinted) { 를 인쇄 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

그와 같은 것은 없습니다 .alamofire는 Json의 거의 모든 유형의 인코딩 매개 변수를 사용하여 데이터를 구성하는 쿼리 문자열을가집니다. –

0
를 JSON = JSON 해주면 (NSUTF8StringEncoding : 데이터 인코딩 데이터)

JSON =있는 NSString하자

.. 스피 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) 
      } 
    } 
관련 문제