2013-01-02 217 views
1

我有一個小問題,當我嘗試從我的iPhone應用程序發送一個JSON到一個PHP服務器。發送json通過帖子

創建NSData對象

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:test]; 

我把它發送到Web服務器

-(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]; 
} 

我的Web服務器

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

我的服務器正確地創建該文件夾中的文件,但文件爲空

(之前被髮送到服務器的json文件是類似的東西[ 「A」, 「B」, 「C」])

感謝你的幫助:P

回答

0

我不知道iPhone開發,但它看起來像在郵件正文中發送JSON數據。爲了獲得在PHP消息的身體,你需要使用以下行:

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

我也要設置Content-Type頭在iPhone上側爲「application/JSON」。

我不知道這是如何在iPhone上工作的,但請記住:POST通常需要參數並在消息體中以HTTP查詢字符串格式進行編碼,並使用「application/x-www-form -urlencoded「作爲Content-Type頭文件,因此請確保iPhone端的軟件沒有這樣做。

+0

它的工作原理!謝謝! – user206137

+0

如果您可以+1我的答案並將其標記爲已回答,那就太好了。謝謝。 – tkocjan

+0

不幸的是我沒有必要的要點+1 :( – user206137