2011-06-01 81 views
1

好吧,我對這個Objective-C和JSON的東西很新,所以請裸露我的問題。我正在使用Stig Json Framework和ASIHTTPRequest。iPhone POST JSON到PHP期望返回登錄/接收數據

我的總體目標是將JSON數據(包含登錄憑據)發送到PHP Web服務,並期望PHP處理數據後返回。我需要返回的授權密鑰以及綁定到登錄憑證的特定用戶數據。

現在,我可以通過POST發送JSON數據所有權,通過PHP消費數據。但我只是不明白返回數據的邏輯,正如我前面所說。我只知道ASIHTTPRequest通過從PHP返回的任何東西返回響應字符串,但這是獲得我想要的返回數據的正確方法嗎?

或者,我將它編碼回JSON?怎麼樣?

我認爲另一個可行的解決方案是編寫一個通過URL接收參數並返回JSON數據的web服務。例如,我如何編寫http://search.twitter.com/[email protected]<name>

+0

JSON是傳輸介質。你會將接收到的JSON文本解碼爲本地數據結構,無論發生在obj-c/xcode中。 – 2011-06-01 03:48:06

回答

0

將數據作爲JSON字符串返回,並且在使用返回的數據之前,需要使用「JSONValue」方法將其轉換爲Objective-C對象。

例如:

NSDictionary *results = [jsonString JSONValue]; 

現在你可以用返回的數據作爲NSDictionary工作。

+0

我試過這個,我的JSON responseString將是字符串(x)「{」a「:1,」b「:2}」而不是{「a」:1,「b」:2}。 json文件。我如何與前者合作? – user777310 2011-06-01 06:27:53

+0

它看起來像一個PHP問題,因爲你的PHP代碼沒有返回正確的JSON。你如何編碼和返回來自PHP的數據? – 2011-06-01 06:32:15

+0

爲響應字符串設置json頭後,我正確地得到了字符串。現在我已經把它和NSDictionary一起工作了,我以前不能。 – user777310 2011-06-01 06:40:01

0

您可以json_encode來自PHP的數據並回應。現在您將在ASIHTTPRequest委託方法中接收JSON數據,即一個響應字符串。然後按你喜歡的方式使用它。

請記住在回覆來自PHP的數據時將標題類型設置爲json

+0

我在哪裏設置標題類型?通過只添加這一行到PHP? header('Content-type:application/json'); ? – user777310 2011-06-01 06:28:52

+0

你是對的,我必須設置標題類型。難怪爲什麼我無法正確序列化字符串,謝謝! – user777310 2011-06-01 06:38:23