0

我目前正在使用以下脚本打印一个 json 文件

<?PHP 

include ('connect.php');



$get_student = mysql_query("SELECT * FROM student ORDER BY name asc");
$anArray = json_decode ($data);

while ($row = mysql_fetch_assoc($get_student)) {

$anArray[] = $row;

}
header("Content-type: application/json"); 
echo json_encode ($anArray, JSON_PRETTY_PRINT)
?>

然后我使用 AFNETWORKING 在 xcode 中获取 json 文件并将其保存到文档目录中

  url = [NSURL URLWithString:@"url/Json3.php"];

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

AFHTTPRequestOperation *downloadOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"database"];

downloadOperation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];

[downloadOperation start];

然后,我尝试将下载的文档作为 JSON 文件读取,其中包含以下内容

NSURL *JsonUrl = [NSURL fileURLWithPath:path];
NSURLRequest *JSONrequest = [[NSURLRequest alloc] initWithURL:JsonUrl];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:JSONrequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {


    anArray = JSON;
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
[operation start];

但是 AFNetworking 在日志中给了我以下错误行

请求失败并出现错误:错误域 = AFNetworkingErrorDomain 代码 =-1016 “预期的内容类型 {(“text/json”、“application/json”、“text/javascript”)},得到文本/纯文本“UserInfo=0xa49f990 {NSLocalizedRecoverySuggestion= [

然后在日志中显示文本文档内容

问题

如何制作 PHP JSON Print,打印 Application/Json 文档而不是文本文档?

谢谢

4

3 回答 3

0

检查 connect.php 的内容是否在 php 结束标记之后没有空格,或者只是删除?>

于 2013-04-08T14:18:35.053 回答
0

假设它是一个标头已经发送的问题,在你的“connect.php”中,在最顶部,把

ob_start();

这将开始输出缓冲,这基本上意味着,php 不会向浏览器发送任何内容,直到所有内容都被渲染(或者直到缓冲区被发送、停止等)。

如果它是别的东西,而您只想将数据保存到 json 文件中,您可以使用

file_put_contents('myfile.json', json_encode($anArray, JSON_PRETTY_PRINT));

此外,您传递给 json_encode 函数的标志可能有问题。只是一个想法。

于 2013-04-08T13:38:43.847 回答
0

好的,我没有解决打印问题,但是一行简单的代码使它工作

    [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];

希望这可以帮助有类似问题的人

于 2013-04-10T08:44:03.103 回答