2016-08-24 1 views
-1

URLからJSONを読み取ろうとしましたが、認証が機能しませんでした。認証でURLからJSONを読み取る

let requestURL: NSURL! = NSURL(string: "http://example.com")! 

    let request = NSMutableURLRequest(URL:requestURL!); 
    let username = "USERNAME" 
    let password = "PW" 
    let loginString = NSString(format: "%@:%@", username, password) 
    let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)! 
    let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions()) 
    request.setValue(base64LoginString, forHTTPHeaderField: "Authorization") 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
     (data, response, error) -> Void in 

     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     print(statusCode) 
    } 

    task.resume() 

それが機能しなかった理由を任意のアイデア:これは私のactuellyコードをイスト

...私はネットの例のAlをたくさん見つけましたが、毎回、認証が失敗しますか? :)

トン-jey

+4

「動作しませんでした」と言われると、より具体的になりますか?サーバーからエラーステータスコード/応答を受け取っていますか? –

+0

私はサーバーから回答を受け取ります。 URLはhttp://api.filer.net/profile.jsonです。私はアカウント情報を取得しようとします。サーバーは "ステータスコード" 401コード –

答えて

-1

要求する方法はPOST

//POST Method 
request.HTTPMethod = "POST" 
//base64 needs the Basic keyword in the auth header 
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") 
+0

あなたの答えをありがとう、私はすでにこれを試してみますが、それは私のために働いていなかった... –

+0

あなたはこれを試してみましたか:https://gist.github.com/ n8armstrong/5c5c828f1b82b0315e24 ??? –

+0

はい、私はまだこれを試しています..サイトはhttp://api.filer.net/profile.jsonです。私は毎回401(ログインrequiet)を回答として得ています –

-2

一度ログイン機能を作成していることを確認してください。

clear login functionと表示されます。URLRequestです。例えば、出力後の

func getLogin() { 
    let url:NSURL = NSURL(string: "http://example.com/login.php?username="+String(username)+"&password="+String(password)+"")! 
    let session = NSURLSession.sharedSession() 

    let request = NSMutableURLRequest(URL: url) 
    let task = session.downloadTaskWithRequest(request) { 
     (
     let location, let response, let error) in 

     guard let _:NSURL = location, let _:NSURLResponse = response where error == nil else { 
      print("error") 
      return 
     } 

     let urlContents = try! NSString(contentsOfURL: location!, encoding: NSUTF8StringEncoding) 

     guard let _:NSString = urlContents else { 
      print("error") 
      return 
     } 

     //all result is here 
     //print(urlContents) 
     //string to NSData conversion 
     let data = urlContents.dataUsingEncoding(NSUTF8StringEncoding) 
     do { 
      //parse NSData to JSON 
      let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) 

       if let check = name["status"] as? String { 

       if check == "1" { 

       print("Login SUCCESS") 

       }else{ 

       print("Login ERROR") 

       } 


      } 


      } 



     } catch { 
      print("error serializing JSON: \(error)") 
     } 


    } 





    task.resume() 

} 

あなたのバックエンドjson authentication。このfunctionを使用するための

[{ 
    "status": "1" // If login true write 1 else write 0 
}] 

login successまたはlogin errorは、以下の下であなたは、他のかどうかを確認することができたときに

getLogin() 

また、あなたは、関数にあなたのコードを使用することができます。

if check == "1" { 

    print("Login SUCCESS") 

}else{ 

    print("Login ERROR") 

} 
関連する問題