【发布时间】:2014-01-22 19:20:26
【问题描述】:
我正在尝试使用 iOS 访问 JIRA REST 网络服务。我设法让请求工作,但响应不是 JSON。我收到一个带有会话 id 的响应以及来自此之前的登录请求的所有内容,并且此请求返回类似的响应,但返回的数据应该是 JSON,但看起来像:。我用 JMeter 发出了相同的请求,它返回一个 JSON 字符串,但 iOS 中的这个请求没有。
NSURL *url = [NSURL URLWithString:@"https://company.atlassian.net/rest/
api/2/project"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url2];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type" ];
[request setHTTPMethod:@"GET"];
//Encoded authorization header
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
[NSURLConnection sendAsynchronousRequest:request queue:
[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse
*response, NSData *data, NSError *error){ }];
我曾尝试操纵 Content-Type 尝试随机不同的东西,但没有奏效。关于如何让它返回 JSON 的任何想法?
【问题讨论】:
-
结果
<61737369 616e2e6e 65742f73 65637572 652f7072看起来像记录NSData的输出,这些是十六进制代码。前几个代表文本“assian.net/secure/” -
有趣。很高兴知道信息就在那里,只是以十六进制编码。我真的不明白为什么我在这里得到这种格式,但是如果我从 JMeter 发出相同的请求,我会得到 JSON。
-
您正在返回一个
NDData对象。这就是你记录的。数据可以是文本,也可以是 JSON(只是特殊格式的文本)。 -
当我将整个响应粘贴到 hes 到字符串转换器时,它会给我我正在寻找的 json 字符串,所以它是正确的响应,只是编码为十六进制。
-
不,当您记录它时,它看起来就是这样。使用
JSONObjectWithData:options:error:将NSData对象转换为包含JSON 数据的数组或字典。
标签: ios objective-c json web-services rest