2017-08-16 23 views
0

私のDjangoバックエンドからiOSアプリケーションのデータを取得しようとしています。郵便配達員で、次のようにGETリクエストを実行するとURL http://127.0.0.1:8000/api/places/categoriesとなり、パラメータがKey:"Authorization" Value: "Bearer access_token".になります。私はJSON応答を受け取ります。Alamofireを使用してデータをフェッチできませんか?

私のアプリの中に私はAlamofireの助けを借りて、このような何かをやっている:

let access_token = "123" 
let headers = ["Authorization": "Bearer" + access_token] 

Alamofire.request(self.categoriesUrl, method: .get, parameters:nil,encoding: JSONEncoding.default,headers: headers).response { response in 
      print("Request: \(response.request)") 
      print("Response: \(response.response)") 
      print("Error: \(response.error)") 

      if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
       print("Data: \(utf8Text)") 
      } 
     } 

私は認証資格情報をを提供していなかったというエラーを取得します。私はこれを理解し、パラメータを渡すように求めますが、パラメータにはトークンが必要です。だから私はこのような何かを:

let access_token = "123" 
let params = ["Authorization": "Bearer" + access_token] 

Alamofire.request(self.categoriesUrl, method: .get, parameters:params,encoding: JSONEncoding.default,headers: nil).response { response in 
      print("Request: \(response.request)") 
      print("Response: \(response.response)") 
      print("Error: \(response.error)") 

      if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
       print("Data: \(utf8Text)") 
      } 
     } 

それはしばらく待ってますが、次のエラーでデータをフェッチするために失敗します。

Response: nil 
Error: Optional(Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x61800004b0d0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://127.0.0.1:8000/api/places/categories/, NSErrorFailingURLKey=http://127.0.0.1:8000/api/places/categories/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}) 
Data: 

はEDIT1: POST MAN SCREENSHOT

+0

このエラーは、インターネットに接続されていないことが原因であると思われます。インターネット接続を確認してください。 – 3stud1ant3

+0

インターネットのためではありません。郵便配達員はうまく働き、カールを要求しています。 – indexOutOfBounds

+0

ヘッダーは無しですか、ポストマンのリクエストを表示できますか?["許可": "ベアラー" + access_token]はヘッダーであり、パラメーターではありません – 3stud1ant3

答えて

0

をこれは非常にあります簡単に修正するには、iOS10以降のOSを使用していると思います。そのため、httpを呼び出す代わりに、httpsを呼び出してください。つまり、iOS10以降でAPI呼び出しプロトコルがhttphttpsに変更されました。

+0

私はそれをどこで正確に行うべきですか?あなたは私が要求しているURLを意味していますか? – indexOutOfBounds

+0

はい、http://127.0.0.1:8000/api/places/categoriesの代わりにhttps://127.0.0.1:8000/api/places/categories –

+0

を呼び出してください。このようには動作しません。 – indexOutOfBounds

0

あなたはここにタイプミスがあります

let params = ["Authorization": "Bearer" + access_token]

あなたはベアラの後にスペースを逃しています。

+0

私の行うことは何でも、私のパラメータはゼロにすることはできませんか?何故ですか?投稿した郵便配達のスクリーンショットを見ることができます。では、私は何をパラメに渡しますか? – indexOutOfBounds

関連する問題