2017-07-14 29 views
-1

配列をサーバーにパラメーターとして送信しようとしましたが、サーバーが受信していません。サーバーは私が送信している2つの配列を受け取る必要があります。しかし、サーバーでは表示されません??私はそれがサーバーで私の間違いか間違いであるか分からないのですか? 私の配列名はtestAnsとtestQuestで、私はそれをパラメータ:answerとquestに送る必要があります。 私のコード:POSTメソッドで配列をサーバーに送る方法は?

let userID = UserDefaults.standard.string(forKey: "userID") 
let artID = UserDefaults.standard.string(forKey: "index") 
let myUrl = URL(string: "http://www.someurls.kz/modules/CheckTestF.php"); 
var request = URLRequest(url:myUrl!) 
request.httpMethod = "POST" 
var testAns = [Int]() 
var testQuest = [Int]() 
testAns = [131,123,23] 
testQuest = [123,233,232] 
let postString = "uID=97B436E41&idUser=\(userID!)&art_id=\(artID!)&answer=\(testAns)&quest=\(testQuest)" 
print(postString) 
print(testAns,testQuest) 
request.httpBody = postString.data(using: String.Encoding.utf8); 
let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in 
    if error != nil 
    { 
     print("error=\(String(describing: error))") 
     return 
    } 
    do { 
     _ = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 
    } 
    catch { 
     print(error) 
    } 

} 
task.resume() 
    } 
+0

は、基本的な質問をする前に、より多くのを参照してください。 – Ragul

+0

@Ragul私はあなたが知っていれば助けてください何かが分かりませんでしたら –

+0

私の答えを見て、あなたに助けがあれば教えてください。 –

答えて

1

私は、サーバー側でその配列をコード化する方法がわかりません。 一時的にこの方法を試して、データベースを確認できます。

let postString = "uID=97B436E41&idUser=\(userID!)&art_id=\(artID!)&answer[0]=131&answer[1]=123&quest[0]=123&quest[1]=233" 
+0

あなたは、応答配列をシリアル化し、postStringに追加する必要があります。 – Hitesh

+0

それはサーバー側のPHP配列です。そのように送信する必要があります。 – Hitesh

0

あなたはまたAFNetworking の高度なバージョンがあり、現時点では非常に人気のあるAlamofireを使用することができ、私はあなたがAPIを打つのに役立ちます方法を共有しています、あなただけ渡す必要がありますこのメソッドのディクショナリオブジェクトは2つのブロックで応答を提供し、要件ごとにレスポンスを使用できます。

1:到達不能()

2:ハンドラー(responseDict)

//MARK: *********** HIT POST SERVICE IN JSON FORM*********** 
    func hitPostServiceJsonForm(_ params:Dictionary<String,Any>,unReachable:(() -> Void),handler:@escaping ((Dictionary<String,Any>?) -> Void)) { 
     if networkReachable() == false { 
      unReachable() 
     } 
     let BASE_URL = "http://mydoamain" 
     var request = URLRequest(url: URL(string: BASE_URL)!) 
     request.httpMethod = "POST" 
     request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
     request.httpBody = try! JSONSerialization.data(withJSONObject: params, options: .prettyPrinted) 

     print(BASE_URL) 
     Alamofire.request(request).responseJSON { response in 
      //print("Request: \(String(describing: response.request))") // original url request 
      //print("Response: \(String(describing: response.response))") // http url response 
      print("Result: \(response.result)")       // response serialization result 
      switch response.result { 
      case .success: 
       if let jsonDict = response.result.value as? Dictionary<String,Any> { 
        print("Json Response: \(jsonDict)") // serialized json response 
        handler(jsonDict) 
       } 
       else{ 
        handler(nil) 
       } 
       if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
        print("Server Response: \(utf8Text)") // original server data as UTF8 string 
       } 
       break 
      case .failure(let error): 
       handler(nil) 
       print(error) 
       break 
      } 
     } 
    } 



func networkReachable() -> Bool { 
    return (NetworkReachabilityManager()?.isReachable)! 
} 
0

FUNCのpost_array(

サーバーに送信しようとし、その後、JSON文字列にあなたの配列を変換する){

let userID = UserDefaults.standard.string(forKey: "userID") 
    let artID = UserDefaults.standard.string(forKey: "index") 
    let myUrl = URL(string: "http://www.someurls.kz/modules/CheckTestF.php"); 
    var request = URLRequest(url:myUrl!) 
    request.httpMethod = "POST" 
    var testAns = [Int]() 
    var testQuest = [Int]() 
    testAns = [131,123,23] 
    testQuest = [123,233,232] 

    var tempAns : NSString = "" 
    do { 
     let arrJson = try JSONSerialization.data(withJSONObject: testAns, options: .prettyPrinted) 
     let string = NSString(data: arrJson, encoding: String.Encoding.utf8.rawValue) 
     tempAns = string! as NSString 
    }catch let error as NSError{ 
     print(error) 
    } 

    var tempQuest : NSString = "" 
    do { 
     let arrJson = try JSONSerialization.data(withJSONObject: testQuest, options: .prettyPrinted) 
     let string = NSString(data: arrJson, encoding: String.Encoding.utf8.rawValue) 
     tempQuest = string! as NSString 
    }catch let error as NSError{ 
     print(error) 
    } 
    let postString = "uID=97B436E41&idUser=\(userID!)&art_id=\(artID!)&answer=\(tempAns)&quest=\(tempQuest)" 
    print(postString) 
    print(testAns,testQuest) 
    request.httpBody = postString.data(using: String.Encoding.utf8); 
    let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in 
     if error != nil 
     { 
      print("error=\(String(describing: error))") 
      return 
     } 
     do { 
      _ = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 
     } 
     catch { 
      print(error) 
     } 

    } 
    task.resume() 
} 
+0

のvar tempAns:NSStringの= "" { をやらせるarrJsonは= JSONSerialization.dataを試してみてください(withJSONObject:testAns、オプション:.prettyPrinted) LET文字列= NSStringの(データ:arrJson、エンコーディング:String.Encoding.utf8.rawValue) tempAns =文字列! as NSString } NSError { print(error) }としてキャッチしようとすると、 – user3318684

関連する問題