2011-06-01 66 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