プログラミングでは新しいので、バックエンドサーバーとしてPHPを使用してiOSアプリケーションを構築する方法を学んでいます。HTTPリクエストでGETメソッドを使用するとドメインエラーが発生する
私が知る限り、httpメソッドでは、私はGETメソッドを使うと、ブラウザにクエリを書くのと同じです。
LETが、私は、ブラウザで次のように書くことができ、私は、サーバからのJSONレスポンスを取得するには、クエリ項目として「ID」を送信したいと言う
ます。http:?/website.com/post.php ID = 23
PHPを使用してバックエンドを構築し、そのIDを取得するために、私はサーバー側のコードで$ _REQUESTを使用します($ _REQUESTは私が知る限りGET &を受け入れることができます)。
ブラウザを使用してそのパスにアクセスすると、サーバーからJSONデータ応答を取得できます。
しかし、私はGETメソッドを使用して、私のiOSアプリからそのクエリを送信しようとしていますとき、私はエラー
エラーがあります:「いいえ値」エラードメイン= NSCocoaErrorDomainコード= 3840を UserInfo = {NSDebugDescription =値なし}
ただし、httpメソッドをPOSTに変更すると、シームレスに処理されます。ここで私のiOSアプリでリクエストを送信したいときに起動されるメソッドです。データベースに新しいデータを作成しないで、データをフェッチしたいだけです。
func loadPost() {
let id = userInfo!["id"] as! String
let url = URL(string: "http://localhost/Twitter/post.php")
var request = URLRequest(url: url!)
request.httpMethod = "GET" <--- if i change this to POST, it is worked
let body = "id=\(id)"
request.httpBody = body.data(using: .utf8)
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { (data, response, error) in
if error == nil {
DispatchQueue.main.async {
self.activityIndicator.startAnimating()
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
guard let parsedJSON = json else {
print ("error while parsing JSON")
return
}
print(parsedJSON)
} catch {
print ("Error : \(error)")
}
}
} else {
print ("Error : \(error!)")
}
})
task.resume()
}
ここで何が問題になりましたか? GETメソッドではなくPOSTメソッドを使用するのはなぜですか?
を経由して、それらを期待しますが、 '使い、'スウィフトでNSDictionary'を使用していないとして、クエリ文字列パラメータ、などのパラメータを期待しています[文字列:任意] 'を使用してJSON辞書を解析し、' .mutableContainers'を使用しません。Swiftでは効果がありません。 –
SafariであなたのURLを試してもらえますか?あなたはデータを取り戻しますか? – Larme