2016-08-09 8 views
0

Swift를 사용하여 PUT 요청을하려고합니다. REST 클라이언트에서 다음과 같은 방법으로 REST 요청을 시도 할 때 :Swift REST Request PUT 선택 사항 (502 잘못된 게이트웨이 : 등록 된 끝점이 요청 처리에 실패했습니다.)

body-x-www-form-urlencoded에서 vote=1을 추가하고 ID를 매개 변수로 사용하면 /user/:id이 작동한다. !

var baseURL = "http://<domain>/user" 
let putURL = baseURL + "/\(id)" 

print(putURL) 
let request = NSMutableURLRequest(URL: NSURL(string: putURL)!) 
request.HTTPMethod = "PUT" 

let putString = "vote=1" 
request.HTTPBody = putString.dataUsingEncoding(NSUTF8StringEncoding) 
request.timeoutInterval = 1500 

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
    data, response, error in 
    guard error == nil && data != nil else { 
     print("error=\(error)") 
     return 
    } 

    let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
    print("responseString = \(responseString)") 
} 
task.resume() 
+0

일반적으로 5XX 오류 코드는 서버 측 오류를 나타냅니다. 서버가 자신의 서버라면 디버깅하여 무엇이 잘못되었는지 이해할 수 있습니다. 어떤 헤더를 보내고 어떤 형식이 매개 변수인지 확인하십시오. –

답변

0

당신은, 예를 컨텐츠 유형을 설정하는 것을 잊었다 :

내가 스위프트 코드에서 동일한 작업을 수행하려고, 그것은 작동하지 않습니다 내가 여기

responseString = Optional(502 Bad Gateway: Registered endpoint failed to handle the request.을 얻을 나의 코드

request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 

없이는 서버가 방금 보낸 임의의 데이터 블록으로 무엇을해야할지 알 수 없습니다.

필자는이 문제가 반드시 유일한 문제는 아니지만 확실히 문제이며보고있는 오류를 유발할만큼 큰 문제입니다.