【问题标题】:How to initiate webservice request that expects JSON payload如何启动需要 JSON 有效负载的 Web 服务请求
【发布时间】:2013-02-06 10:01:22
【问题描述】:

我是 JSON 新手,找不到任何关于如何模拟 JSON 负载请求的资料。

我的最终目标是能够构建一个 Objective-c 的 iOS 应用程序来处理这些请求-响应。我知道 ASIHttprequest 框架和它所使用的请求-响应机制。

但是现在我有一个 webservice api,它需要各种 json 有效负载,并且还提供 json 格式的响应。这是一个例子:

示例网址:

https://mywebServiceURL/api/ApiKey/user/create

The ContentType header = “application/json”.

有效负载:PUT 有效负载是一个 JSON 字典,包含以下键值对:

email
screenName
User’s screen name. 
password
passwordConfirm    
phoneNumber (optional)
User’s phone number (optional)
picture A png file (64x64), encoded as a Base64 string (optional)

现在我的问题:

1 - 我如何正常模拟这个(在 ios 之外,只是为了测试)?我搜索了谷歌,但找不到我需要的东西,我得到了 curl.exe,但它给了我和浏览器一样的东西,比如不允许的方法等。但这不是我唯一想要的。在我知道 PUT、GET、POST 等的真正工作原理之前,我想处理各种请求、提供值并带上 api 一段时间。

2 - 将这些东西整合到 iOS 中的最佳方式是什么?我的项目中已经包含用于 Web 请求的 ASIHttp 和用于 JSON 处理的 JSONKit。

我做过这种事情,但是使用 xml 响应,获取请求。 JSON 我是第一次工作。只需一个指向此类示例内容的指针就会有很大帮助。

【问题讨论】:

    标签: iphone ios objective-c json jsonkit


    【解决方案1】:
    1. 有几个 Chrome 扩展程序,例如高级 REST 客户端或 REST 控制台,可用于模拟 REST 调用。它们可以非常快速且轻松地安装到您的浏览器中,并允许您构建请求并查看响应。

    2. 我推荐使用开源 iOS 网络库AFNetworking。该库内置了对 REST 调用和 JSON 解析的支持。它非常容易启动和运行,如果您需要更多高级功能,它非常强大。

    希望这会有所帮助。

    【讨论】:

    • RESTkit 建立在 AFNetworking 之上。虽然 AFNetworking 是一个更通用的工具箱,但 RESTKit 专门用于 RESTful 通信,但也有很多其他好东西(生命周期、内存、对象、路由、持久性......)
    【解决方案2】:

    请补充安迪的建议,因为我在最近的一个应用中使用了类似的东西。

    1. 使用 Chrome 扩展海报测试 REST 调用。
    2. 使用 ASIHttpRequest 处理异步查询。

    示例代码sn-p

        //dictionaryData contains the login user details
        NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryData  options:kNilOptions error:nil]; 
        NSString *jsonString = [[[NSString alloc] initWithData:jsonData                  encoding:NSUTF8StringEncoding]autorelease];                                         
        //Handling ASI requests
        ASIHTTPRequest* request = [ASIHTTPRequest requestWithURL:uri];
        [request addRequestHeader:@"Content-Type" value:@"application/json"];
        [request addRequestHeader:@"Accept" value:@"application/json"];
        [request appendPostData:[jsonData dataUsingEncoding:NSUTF8StringEncoding]];
        [request setRequestMethod:@"POST"];
        [ASIHTTPRequest setDefaultTimeOutSeconds:30];
        request.delegate = self;
        [request startAsynchronous];
    

    【讨论】:

    • ASIHttpRequest 已死,请勿向他人推荐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多