使用POST将JSON发送到Restful Web服务

时间:2011-05-21 20:41:08

标签: iphone objective-c rest asihttprequest

我想用POST / PUT发送JSON我不知道它是否同样的想法。 这是json。 { “作家”: “迈赫迪”, “电子邮件”: “email@hotmail.fr”, “消息”: “Hello2”} 这是我的wadl。

<resource path="/messages/"><method id="get" name="GET"><request><param name="start" style="query" type="xs:int" default="0"/><param name="max" style="query" type="xs:int" default="10"/><param name="expandLevel" style="query" type="xs:int" default="1"/><param name="query" style="query" type="xs:string" default="SELECT e FROM Message e"/></request><response><representation mediaType="application/xml"/><representation mediaType="application/json"/></response></method><method id="post" name="POST"><request><representation mediaType="application/xml"/><representation mediaType="application/json"/></request><response><representation mediaType="*/*"/></response></method><resource path="{keyid}/"><param name="keyid" style="template" type="xs:int"/><method id="get" name="GET"><request><param name="expandLevel" style="query" type="xs:int" default="1"/></request><response><representation mediaType="application/json"/></response></method></resource></resource>

当我试图发布netbeans“测试restful webservice”时它工作,这是wat http监视器显示

  

状态:201(已创建)

     

时间戳:2011年5月21日星期六20:30:33   GMT

     

发送:   { “作者”: “梅迪”, “电子邮件”: “email@hotmail.fr”, “消息”: “Hello2”}

     

收到:

     
     

请求:POST   http://localhost:8080/TRESTful/resources/messages/?   时间戳= 1306009225785

     

状态:201(已创建)

     

时间戳:2011年5月21日星期六20:20:25   GMT

     

发送:   { “作者”: “梅迪”, “电子邮件”: “email@hotmail.fr”, “消息”: “Hello2”}

但现在我不知道如何使用ASIHttpRequest。首先我应该[请求setRequestMethod:@“PUT”]; ?我应该像字符串一样发送所有json,或者用hey键放置每个值,如下所示:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"author"];
[request setPostValue:@"Copsey" forKey:@"email"];
[request setPostValue:@"Hello2" message:@"author"];
[request startSynchronous];

或者我应该将JSON字符串放在一个值中?

请帮助。

1 个答案:

答案 0 :(得分:2)

如果你想发送一个json,你有两个选择:

a)将其发送到文件中    - 如果你在json中有很多数据,你可能希望将它存储在服务器上以便以后解析。

b)以字符串形式发送一个值    - 如果您的json很短并且您想立即解析它,请使用此方法

修改

c)如果要跳过服务器上的解析并直接访问数据,请将其作为单独的值发送。如果数据很少,则应该使用此方法。