2014-10-12 1 views
0

저는 대학 웹 사이트에 로그인하여 내 카드에있는 Saldo를 나에게 돌려줘야하는 간단한 응용 프로그램을 작성 중입니다.HTTP 요청은 우편 배달부에서 작동하지만 Swift에서는 작동하지 않습니다.

우편함과 함께이 간단한 요청을 수행하면 정상적으로 작동하며 로그인 된 HTML 페이지가 표시됩니다. 가 XCODE에서 같은 요청이 작동하지 않습니다 수행 :

<NSMutableURLRequest: 0x7fecdb54b720> { URL: https://campuscard.hhs.nl/portal/j_spring_security_check, headers: { 
    Accept = "*/*"; 
    "Accept-Encoding" = "gzip,deflate"; 
    "Accept-Language" = "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4"; 
    "Cache-Controle" = "max-age=0"; 
    Connection = "keep-alive"; 
    "Content-Length" = 41; 
    "Content-Type" = "application/x-www-form-urlencoded"; 
} } 

아무도 차이가 사이에 무엇인지 알고 있나요 :

override func viewDidLoad() { 
    super.viewDidLoad() 


    var dataString = "j_username=USERNAME&j_password=PASSWORD" 
    var request : NSMutableURLRequest = NSMutableURLRequest() 
    request.URL = NSURL(string: "https://campuscard.hhs.nl/portal/j_spring_security_check") 
    var postString = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 
    request.HTTPMethod = "POST" 
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
    //request.setValue("JSESSIONID=C78C688403A836968EC1FEAED9AE9126", forHTTPHeaderField: "Cookie") 
    //request.setValue("campuscard.hhs.nl", forHTTPHeaderField: "Host"); 
    request.setValue("keep-alive", forHTTPHeaderField: "Connection"); 
    request.setValue("41", forHTTPHeaderField: "Content-Length"); 
    //request.setValue("max-age=0", forHTTPHeaderField: "Cache-Controle"); 
    //request.setValue("*/*", forHTTPHeaderField: "Accept"); 
    //request.setValue("https://campuscard.hhs.nl", forHTTPHeaderField: "Origin"); 
    //request.setValue("https://campuscard.hhs.nl/portal/login", forHTTPHeaderField: "Referer"); 
    //request.setValue("gzip,deflate", forHTTPHeaderField: "Accept-Encoding"); 
    //request.setValue("nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4", forHTTPHeaderField: "Accept-Language"); 
    request.HTTPBody = postString 
    println(request); 
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in 
     println(NSString(data: data, encoding: NSUTF8StringEncoding)) 
    } 
} 

이 페이지는 로그인을하지 않습니다 ... 인쇄 요청과 같은 우편 배달부가 보내는 요청 및 내가 수행 한 요청

미리 감사드립니다.

답변

2

이 특별한 경우에 보안 토큰이 요청에서 전송되어야했습니다. Chrome 크롬 디버거에서 요청을 면밀히 모니터링하여이 문제를 해결했습니다.

관련 문제