NSURLConnection.sendAsynchronousRequest를 사용하여 PHP 사전에 배열을 보내고 싶습니다. 나는 그렇게하는 가장 좋은 방법은 각 객체를 자체적으로 보내는 것을 피하기 위해 PHP 파일에 json 객체를 보내는 것이라고 생각했습니다. 그러나, json 개체가 성공적으로 보내지고 php 파일에 의해받은 있지만 개체를 디코딩 할 때 null 대신 가져옵니다. 누구든지 내 코드에 무슨 문제가 있는지 알고 있습니까?swison 3에서 사전에 json 배열을 PHP로 보내십시오.
내 빠른 코드는 다음과 같습니다
var jsonArray = [Dictionary<String,AnyObject>]()
for user in users {
let dictionary = ["user_id": user.userid, "username":user.username] as [String : Any] // random example
jsonArray.append(dictionary as Dictionary<String, AnyObject>)
}
let url: URL = URL(string: str)!
let rqst:NSMutableURLRequest = NSMutableURLRequest(url:url)
rqst.timeoutInterval = 10
let bodyData = "json=\(jsonArray)"
rqst.httpMethod = "POST"
rqst.httpBody = bodyData.data(using: String.Encoding.utf8)
rqst.httpBody = bodyData.data(using: String.Encoding.utf8)
PHP 측 :
if(isset($_POST["json"])){
echo "hello world";
$json = $_POST["json"];
echo $json;
$jsonArray = json_decode($json);
echo gettype($jsonArray);
}
else
echo "missing fields";
무엇 일어나는 것은 내가 jsonArray의 종류를 에코 때 나는 심지어 내가 얻을 $ JSON 에코 때 비록 널 얻을 수 있다는 것입니다 올바른 값. 또한 swift 코드에 rqst.setValue("application/json", forHTTPHeaderField: "Content-Type")
을 추가하면 $ _POST [ "json"]이 설정되지 않습니다.
누구든지이 문제를 해결하는 방법을 알고 있습니다.
사전의 배열을 보내고 있지만 각 사전 또는 사전의 배열에 데이터 = NSJSONSerialization을 수행합니까? –
배열 –
을 직접 변환 할 수 있습니다. 이제 $ json 객체의 실제 객체 대신 바이트 수를 반환하고 json_decode ($ json)은 여전히 null을 반환합니다. –