2016-01-04 17 views
6

Imgur APIへのHTTPリクエストを作成しようとしています。タグ「cats」に関連付けられているすべての画像を取得しようとしています。 urlは、ImgurのAPIに基づいている:https://api.imgur.com/3/gallery/t/catsSwiftのヘッダーで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

何かが、おそらくあなたの問題の説明では、間違ってます: "\"、 "メソッド": "取得"}、 "成功":偽、上記のunauth'd HTTP GETをChromeブラウザから正確に実行すると、 "status":401} 403は「許可されていません」という意味では許可されていないため、そのページを取得することはできません。 – BaseZen

+0

ブラウザにそのURLをコピー/ペーストすると、401の同じステータスコードが返されます。しかし、Xcodeで実行すると、ステータスコードは403になります.Xcodeでrequest.setValueメソッドを削除すると、ステータスコードが変更されます – joey

答えて

12

私はあなたのヘッダー値のためとして、あなたの実際のクライアントIDにクライアントID文字列を付加する必要があると思う:認証が必要ですコードは401であるため、

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

私を助けることができますか?私はGoogleの本のapiのために同じことをやっているが、私は無効な資格情報を取得しています。あなたが私を助けることができるかどうか教えてください。 –

関連する問題