【问题标题】:Get a JSON response from JIRA webservice in iOS从 iOS 中的 JIRA 网络服务获取 JSON 响应
【发布时间】: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


【解决方案1】:

您正在设置 Content-Type 标头,但您似乎没有发送任何内容。您似乎应该设置 Accept 标头。

您不能记录 NSData 实例并期望看到内容,即使内容是字符串。登录时,尝试将数据转换为字符串 (alloc, initWithData:) 或反序列化 JSON (JSONObjectWithData:options:error:)。

【讨论】:

    猜你喜欢
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多