スタック・オーバーフロー Asked by Gen.U on January 3, 2021
以下のjsonデータが返ってくるURLは http://127.0.0.1:8000/api/v1/ です
シミュレータ上では正しくレスポンスが取得できましたが,実機で試みたところ,取得できませんでした.どうすれば良いでしょうか?
使用しているのはAlamofire4.0です.
JSON
{
"books": [
{
"id": 1,
"name": "Django入門",
"publisher": "GeekLab Nagano",
"page": 10,
"impressions": [
{
"id": 1,
"comment": "途中でrn眠くなった。"
},
{
"id": 2,
"comment": "ああ"
},
{
"id": 3,
"comment": "いい"
}
]
},
{
"id": 2,
"name": "Raspberry Pi 入門",
"publisher": "GeekLab Nagano",
"page": 15,
"impressions": []
}
]
}
コード
var tableTitle = [String]()
var tableDetail = [String]()
let url:String = "http://127.0.0.1:8000/api/v1/"
func loadData() {
Alamofire.request(url).responseJSON {
response in
guard let value = response.result.value else {
return
}
let json = JSON(value)
let books = json["books"]
for item in books.arrayValue {
self.tableTitle.append(item["name"].stringValue)
self.tableDetail.append(item["publisher"].stringValue)
}
print(self.tableTitle)
print(self.tableDetail)
self.tableView.reloadData()
}
}
Djangoを実行する時のデフォルトのホストである127.0.0.1
だとDjangoを実行したマシンからしかアクセスできませんので、以下の様に起動して下さい。
python manage.py runserver 0.0.0.0:8000
これで同じネットワーク上の他のマシンからhttp://<Djangoを実行しているマシン名またはIPアドレス>:8000/
でアクセスできるようになります。
シミュレータ上では正しくレスポンスが取得できましたが,実機で試みたところ,取得できませんでした.どうすれば良いでしょうか?
「取得できませんでした」だとどういう状況かわかりません。
HTTPリクエストでうまくいかない状況としては
などがあります。
これらのどこでうまくいっていないかによって、原因と対応方法は変わってきます。
自分はSwingはわからないので具体的にどう確認すればいいのかは書けませんが、HTTP通信をする際はこれらのどこでうまくいっていないかを確認することをお勧めします。
Djangoのsettings.py
で接続を許可するホストを指定するための設定があります。
デフォルトだと
ALLOWED_HOSTS = []
となっていてDjangoを実行しているマシンからしかアクセスできないので、どこからでもアクセスできるようにするには
ALLOWED_HOSTS = [*]
として下さい。
Answered by tag1216 on January 3, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP