【发布时间】:2025-07-25 22:40:01
【问题描述】:
我正在尝试从 URL 获取 JSON 以使用 Alamofire 下载。
Alamofire.request(requrl, method: .get, encoding: JSONEncoding.default)
.responseJSON { response in
print(response.result)
print(response.value)
debugPrint(response)
}
但是response.value的值为nil,请求结果状态为FAILURE。日志中有以下内容:
>[Data]: 919 bytes
[Result]: FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))
[Timeline]: Timeline: { "Request Start Time": 561988246.258, "Initial Response Time": 561988246.446, "Request Completed Time": 561988246.447, "Serialization Completed Time": 561988246.447, "Latency": 0.189 secs, "Request Duration": 0.189 secs, "Serialization Duration": 0.000 secs, "Total Duration": 0.190 secs
php 脚本
<?php
header('Content-type: application/json');
//header('Content-Type: html; charset=utf-8');
$sqlstatement = $_GET["sqlstatement"];
// Create connection
$dbConnection=mysqli_connect("***.***.gear.host","****","*****!","****");
//$sqlstatement = "SELECT * FROM reeds.tbl_user";
// Check connection
if (mysqli_connect_errno())
{
// Print error message
echo mysqli_connect_error();
}
// Stores SQL statement, selecting all objects from testcomputing.name
// Check to ensure results > = 1
if ($result = mysqli_query($dbConnection, $sqlstatement))
{
// If so, then create a results array and a temporary one to hold the data
$resultArray = array();
$tempArray = array();
// Loop through each row in the result set
while($row = $result->fetch_object())
{
// Add each row into our results array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
// Encode the array to JSON and output the results
echo json_encode($resultArray);
}
// Close connections
mysqli_close($dbConnection);
?>
【问题讨论】:
-
查看错误日志的响应序列化存在一些问题。确保来自 url 的数据是正确的 json 格式。
-
你能检查响应内容类型吗?看起来您没有收到 JSON 响应。您可以尝试只使用
response而不是responseJSON方法来查看结果吗? -
对 GET 请求使用
URLEncoding()。 -
因为 Alamofire 在结果中期望 JSON(您正在使用 JSONEncoding),所以响应数据的第一个字符应该是
{或[。 -
@Marcel 请查看更新后的问题,了解 JSON 从 url 返回的内容