2016-01-04 49 views
6

我正在嘗試向Imgur API發出HTTP請求。我試圖檢索與標籤「貓」相關的所有圖像。網址,根據Imgur API是:https://api.imgur.com/3/gallery/t/cats在Swift中製作帶HTTP頭的HTTP請求

的Imgur API狀態下即將作出獲得請求所需的授權:

對於公共只讀和匿名資源,如獲取圖像 信息,查找用戶評論等。您只需在您的請求中發送 授權標頭和client_id。如果您想匿名上傳圖片(沒有圖片
與帳戶關聯),或者您想創建匿名的
專輯,這也是 的作品。這讓我們知道哪個應用程序正在訪問API。

Authorization: Client-ID YOUR_CLIENT_ID 

我已經看過了下面的問題,並試圖提出的東西有,但他們都沒有幫助。

JSON NSURLRequest with credentials

Swift GET request with parameters

How to make a Http get and set httpHeader in Swift?

我當前的代碼是這樣的:

let string = "https://api.imgur.com/3/gallery/t/cats" 
let url = NSURL(string: string) 
let request = NSMutableURLRequest(URL: url!) 
request.setValue("clientIDhere", forHTTPHeaderField: "Authorization") 
//request.addValue("clientIDhere", forHTTPHeaderField: "Authorization") 
request.HTTPMethod = "GET" 
let session = NSURLSession.sharedSession() 

let tache = session.dataTaskWithRequest(request) { (data, response, error) -> Void in 
    if let antwort = response as? NSHTTPURLResponse { 
     let code = antwort.statusCode 
     print(code) 
    } 
} 
tache.resume() 

但我不斷地得到403狀態碼,需要授權的意義。我究竟做錯了什麼?

+0

有什麼地方不對勁,也許在你的問題的描述,因爲需要授權碼是401: 「{」data「:{」error「:」Authentication required「,」request「:」\/3 \/gallery \/t \/cats「,」method「:」GET「}, 「status」:401}'在進行上述從Chrome瀏覽器獲得的HTTP GET時。 403是'禁止',這意味着沒有任何授權可以讓你獲得該頁面,這只是一個鎖定區域。 – BaseZen

+0

當把這個url複製/粘貼到瀏覽器中時,我得到了相同的響應,狀態碼爲401.但是,當它在Xcode中運行時,狀態碼是403.如果我刪除Xcode中的request.setValue方法,則狀態碼更改到401。 – joey

回答

12

我認爲你需要預先客戶ID串到你的實際客戶端ID爲標頭值:

request.setValue("Client-ID <your_client_id>", forHTTPHeaderField: "Authorization") 
+0

你能幫助我嗎?我正在爲Google書籍API做同樣的事情,但我收到無效的憑證。請讓我知道你是否可以幫助我。 –