通过邮件发送json

时间:2013-01-02 17:16:37

标签: json post webserver

当我尝试将ison从我的iphone应用程序发送到php服务器时,我遇到了一些问题。

我创建NSData对象

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:test];

我将其发送到网络服务器

-(void)send:(NSData *)jsonData{



    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
                                    initWithURL:[NSURL
                                                 URLWithString:@"http://localhost:8888/jsonserver/try2.php"]];
    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:jsonData];

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
}

我的网络服务器

<?php
    $json = $_POST['json'];
    $person = json_decode($json);    
    $file = fopen('test.txt','w+');
    fwrite($file, $person);
    fclose($file);
?>

我的服务器在文件夹中正确创建了文件,但该文件为空

(我的json文件发送到服务器之前就是这样的[&#34; a&#34;,&#34; b&#34;,&#34; c&#34;])

谢谢你的帮助:P

1 个答案:

答案 0 :(得分:0)

我不知道iPhone开发,但看起来你正在邮件正文中发送JSON数据。要在PHP中获取消息正文,您需要使用以下行:

$json = file_get_contents("php://input");

我还要将iPhone端的Content-Type标头设置为“application / json”。

我不知道这在iPhone上是如何工作的,但要记住这一点:POST通常会采用参数并在消息正文中以HTTP查询字符串格式对其进行编码,并使用“application / x-www-form- urlencoded“作为Content-Type标题,因此请确保iPhone方面的软件没有这样做。