我正在尝试将JSON数据(字典数组)发送到服务器并检索JSON字符串(简单字符串Reposponse)。 这是一个代码:
do
{
let serializedData = try JSONSerialization.data(withJSONObject: OrderList, options: JSONSerialization.WritingOptions.prettyPrinted)
print(String(data: serializedData, encoding: String.Encoding.utf8))
request.httpBody = serializedData
//print(request.httpBody as Any)
}
catch
{
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: {data, response,error -> Void in
print("Request : \(response)")
let res = response as! HTTPURLResponse
print("Status Code : \(res.statusCode)")
let strResponse = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("Response String :\(strResponse)")
})
dataTask.resume()
服务器端代码是(Php):
$JSON_Received = $_POST["user_contacts"];
$obj_data = json_decode($JSON_Received, true);
$user_id=$data_array['user_id'];
$user_friend_list=$data_array['friend_list'];
我有两个我无法理解的问题。
1)因为api希望接收JSON数据所以当我打印SerialzedData
以检查json是否正确时:它打印出如下内容:
Optional("{\n \"user_contacts\" : [\n {\n \"friend_list\" : \"+928885555512\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925555648583\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925555228243\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925554787672\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925556106679\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925557664823\",\n \"user_id\" : \"+9255\"\n }\n ]\n}")
我发送的是正确的JSON吗?因为我检查在线解析器它无法转换正确的json。那么我该如何发送正确的JSON。
2)当我打印datatask
(在调试器中)时,它会显示"Variable Not Available"
SO帮我解决这个问题:提前谢谢!