繁体   English   中英

为什么 Json 字典总是在 nsdata(Bytes) 中给出响应。如何从 Web 服务获取字典

[英]why Json Dictionary is Giving the response in nsdata(Bytes) always.How can i Get the Dictionary from web service

在此,我将发送标头并添加参数以访问 Web 服务。 问题是在点击 Web 服务控制器后有时不会进入成功部分。 如果它正确命中,那么它将以字节为单位返回结果。 这是我的代码::

 AFHTTPRequestOperationManager *manager =[AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.requestSerializer setTimeoutInterval:300];
manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;

//giving the correct format to json
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
token=[parameters valueForKey:@"token"];
if(token == nil  || [token isEqual:[NSNull null]]){
    token=[[[NSUserDefaults standardUserDefaults]dictionaryForKey:@"LoginWebData"]valueForKey:@"token"];
}else{
    token=[parameters valueForKey:@"token"];
}
//set the header do http request
[manager.requestSerializer setValue:[NSString stringWithFormat:@"%@",token]forHTTPHeaderField:@"token"];
[manager POST:[BaseURLString stringByAppendingString:methodName] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject){

    NSLog(@"JSON: %@", responseObject);
    UserDict=responseObject;
    [self.TableviwSideMenu reloadData];
}
      failure:^(AFHTTPRequestOperation *operation, NSError *error){
          NSLog(@"Error: %@", [error localizedDescription]);
          [self showAlert: [error localizedDescription]];
      }];

AFNetworking 将为您进行序列化,而 responseObject 很可能是 NSArray 或 NSDictionary 对象,就像

   [manager POST:[BaseURLString stringByAppendingString:methodName] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject){

    NSLog(@"JSON: %@", responseObject);
       if ([responseObject isKindOfClass:[NSArray class]]) {
    NSArray *responseArray = responseObject;
       UserDict=responseArray;
    /* do something with responseArray */
} else if ([responseObject isKindOfClass:[NSDictionary class]]) {
    NSDictionary *responseDict = responseObject;
     UserDict=responseDict;
    /* do something with responseDict */
}
    if (UserDict.count>0)
     [self.TableviwSideMenu reloadData];

}
      failure:^(AFHTTPRequestOperation *operation, NSError *error){
          NSLog(@"Error: %@", [error localizedDescription]);
          [self showAlert: [error localizedDescription]];
      }];

AFNetworking 框架及其委托将处理一切。 您将在 NSDictionary 中获得 responseObject。

  -(void)Request{
    [self.Request_coursecomplete setRequestMethod:@"POST"];
    self.Request_coursecomplete = [ASIFormDataRequest requestWithURL:sendSMSURL];
    self.Request_coursecomplete.delegate = self;


    //will try second time
    [self.Request_coursecomplete setNumberOfTimesToRetryOnTimeout:2];

    [self.Request_coursecomplete setShouldContinueWhenAppEntersBackground:YES];

    NSTimeInterval timeOutSecs = 60000;

    [self.Request_coursecomplete setTimeOutSeconds:timeOutSecs];
    [self.Request_coursecomplete startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{

    NSString *receivedString = [request responseString];

    NSLog(@"json string: %@",receivedString);

    NSDictionary *d = [receivedString JSONValue];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM