2011-12-20 45 views
5

如何訪問通過http-post收到的php腳本中的json數據? 我做在iOS端如下:從iOS到PHP的JSON數據 - 腳本

NSData *data = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL]; 

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/script.php"]]; 
[req setHTTPMethod:@"POST"]; 
[req setHTTPBody:data]; 

[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err]; 

如何在PHP腳本訪問這些數據?換句話說,當我在php腳本中調用json_decode(...)時,什麼是...

+0

調試這種東西的一個好方法是'的var_dump($ _ POST)'到一個日誌文件,看你要發送的內容。 – jprofitt

+0

我建議首先找到一個基本的PHP課程,以確保您瞭解PHP的基礎知識(獲取POST數據相當基礎)。 –

+4

抱歉,$ _POST直接發佈json-data時不包含任何數據。訪問'php://輸入'對我來說似乎不那麼基本。 –

回答

14

如果您要發送的POST方法的JSON,它可以在PHP收到與下面的代碼

<?php $handle = fopen('php://input','r'); 
       $jsonInput = fgets($handle); 
       // Decoding JSON into an Array 
       $decoded = json_decode($jsonInput,true); 
?> 
+1

謝謝!完善! –

+0

好作品謝謝... – Elby

+0

@ nakkeeran,我們可以總是使用php://輸入?從來沒有使用它,但它似乎工作在我的本地設置 – alex

0

在PHP腳本你把POST數據並做

json_decode($data); 

,並會給你一個對象,你可以工作。

+0

什麼是$數據?它是$ _POST嗎? –

+0

我想。給它一個鏡頭,並讓我知道 – macintosh264

+0

不,我不使用$ _POST。順便說一句,爲什麼這個問題得到這麼多的反對票?!這有什麼不好? –

1

在使用iOS不以$ _ POST發送工作POST請求。如果使用js發出類似的請求,則post中的json會起作用。

+0

正確的方法是將標題設置爲text/html。如果你將頭文件設置爲application/json,那麼php腳本就會搞砸了。 –

0
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody: jsonData]; 
    [request setValue:@"text/html" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"]; 

該代碼可以用來發送響應