2017-12-21 17 views
0

プログラミングでは新しいので、バックエンドサーバーとして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メソッドを使用するのはなぜですか?

+1

を経由して、それらを期待しますが、 '使い、'スウィフトでNSDictionary'を使用していないとして、クエリ文字列パラメータ、などのパラメータを期待しています[文字列:任意] 'を使用してJSON辞書を解析し、' .mutableContainers'を使用しません。Swiftでは効果がありません。 –

+0

SafariであなたのURLを試してもらえますか?あなたはデータを取り戻しますか? – Larme

答えて

関連する問題