简单的JSON php请求iPhone

时间:2013-11-12 20:07:36

标签: php mysql ios iphone json

我想进入mySQL,JSON iPhone世界。我用我的Arduino设置了一个简单的气象站,并将温度发送到我的MySQL数据库。我在我的服务器上创建了一个php文件。

当我在Safari中打开文件时,它看起来像这样:

{"weatherstation":[{"location":"indoor","celsius":"22.85"}]}

现在我想为我的iPhone创建一个显示温度的简单应用程序。 有人能帮帮我一些代码吗?我在这里搜索堆栈溢出,但大多数人比我更先进。

几乎每个代码都以:

开头
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSURL *url = [NSURL URLWithString:@"http://myWebsite.com/myPHPFile.php"];
    NSError *error = nil;

如果有人能帮我介入这个话题,我将非常感激。

修改

这是我的php文件的一些代码。如何将其更改为JSON类型?我尝试了

header('Content-Type: application/json');

但之后我的php文件显示了整个html结构(< html> ...< / html>)。 如果我将内容类型更改为json,我是否必须更改html部分?

<?php

...

header('Content-Type: application/json'); 

...

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="application/json; charset=utf-8">
  <meta name="viewport" content="user-scalable=yes, width=device-width"> 
  <title>My Temperature</title>
</head>
<body>
 <?php
if(!isset($E)) 
{
?>
{"weatherstation":[{"location":"indoor","celsius":"<?php echo $temp;?>"}]}
<?php           
} 
else 
{
  echo $M;
}
?>   
</body>
</html>

2 个答案:

答案 0 :(得分:1)

在项目中加入AFNetworking,导入"AFHTTPRequestOperationManager.h"和 在您的文件中"AFURLResponseSerialization.h"并使用以下代码:

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager manager] initWithBaseURL:BASE_URL];
[manager setResponseSerializer:[AFJSONResponseSerializer serializer]];

NSDictionary *parameters = @{@"username" : @"john123", @"type" : @"login"};
[manager POST:@"data.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject){
    NSLog(@"response: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error){
    NSLog(@"error: %@", error);
}];

答案 1 :(得分:1)

使用以下代码可以轻松获取json数据

-(void)viewDidLoad{
     //Call function to fetch temperature

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [self getTemperature];
     });
}


-(void)getTemperature{

    NSData *jsonData=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://myWebsite.com/myPHPFile.php"]];

    if(jsonData){

        NSJSONSerialization *result=[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil];

        //Here you get your json parsed        
        NSDictionary *json=(NSDictionary *)result;

        //Get the weather array from your json
        NSArray *arrWeather=[json objectForKey:@"weatherstation"];

        //Loop to get the values

        for(NSDictionary *weather in arrWeather){
             NSLog(@"Temp for Location %@ is %@",[weather objectForKey:@"location"],[weather objectForKey:@"celsius"]);
        }

   }
}

修改

你的PHP应如下所示,你可以直接使用这个版本,因为我从代码中删除了前导空格

<?php
    header('Content-Type: application/json');

    if(!isset($E))
    {
?>
{"weatherstation":[{"location":"indoor","celsius":"<?php echo $temp;?>"}]}
<?php
    } 
    else
    {
      echo $M;
    }
?>