2014-01-22 121 views
0

我正在尝试使用iOS访问JIRA REST webservice。我设法让请求起作用,但响应不是JSON。我得到了一个会话ID以及来自此之前的登录请求的所有内容的响应,并且此请求返回了类似的响应,但返回的数据假设为JSON,但看起来像:< 61737369 616e2e6e 65742f73 65637572 652f7072(继续几行)>。我用JMeter做了同样的请求,它返回了一个JSON字符串,但是这个请求在iOS中没有。从iOS的JIRA webservice获取JSON响应

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){ }]; 

我试图操纵内容类型尝试随机不同的事情,但都没有工作。任何想法如何让它返回JSON?

+1

结果'<61737369 616e2e6e 65742f73 65637572 652f7072'看起来像记录'NSData'的输出,而那些是十六进制代码。前几个代表文本“assian.net/secure/” – rmaddy

+0

有趣。很高兴知道这些信息在那里,只是以十六进制编码。我真的不明白为什么我在这里得到这种格式,但如果我从JMeter发出相同的请求,那么JSON。 – Maroon5Five

+0

您正在取回一个'NDData'对象。这就是你所记录的。数据可以是文本,也可以是JSON(只是特殊格式的文本)。 – rmaddy

回答

1

您正在设置Content-Type标题,但您似乎没有发送任何内容。看起来更像是你应该设置Accept标题。

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