我想进入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>
答案 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;
}
?>