【问题标题】:IOS 7 how to print the url response dataIOS 7如何打印url响应数据
【发布时间】:2014-07-18 12:06:09
【问题描述】:

我正在尝试调用网络服务。我试过这个

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.75.1:8082/projectname/public/tests"]];
    NSURLSessionConfiguration *configuration = [ NSURLSessionConfiguration ephemeralSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
    NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request completionHandler:^(NSURL *localFile, NSURLResponse *response, NSError *error) {
        if(!error){
            NSLog(@"no error");

        }else{
            NSLog(@"error");
        }
    }];
    [task resume];
}

如您所见,有两个 nslog 语句。我得到了no error 一个。

当我从我的 safari 调用该网络服务时,我在浏览器中打印了一个简单的字符串 index,请问如何在我的 xcode 中看到该字符串?

谢谢

【问题讨论】:

  • 你确定,你需要 NSURLSession 吗?它用于下载数据。还是您只需要回复?
  • 可以实现委托方法——(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location;
  • OP 已使用完成处理程序。那么我猜就不需要委托了
  • @Anil 是的,这正是我在教程中学到的。我对这些答案感到困惑,我认为我的方式是错误的

标签: ios objective-c ios7


【解决方案1】:

你可以实现委托方法

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location;

编辑

试试这个

NSHTTPURLResponse *response = nil;
NSError *error = nil;

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL      URLWithString:YOUR URL]];
NSData *respData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"~~~~~ Status code: %d", [response statusCode]);
//Print your recived data here..
NSString *str = [[NSString alloc] initWithData:respData encoding:NSUTF8StringEncoding];
NSLog(@"str: %@", str);

【讨论】:

  • 你可以参考这个链接了解详情:- hayageek.com/ios-nsurlsession-example
  • 我现在是IOS,你能不能更改我的代码并告诉我要从中删除什么?或者我必须保持原样并添加您的功能?还请如何在您的代码中打印消息?
  • 谢谢。但是,您没有使用 nsurlsession,正如我所读到的,这是非常推荐的。请问这样对吗?
  • NSUrlsession 是用来下载文件的,这里你不是下载任何文件只是响应或字符串,所以使用 NSURlsession 不是必须的.​​.
  • +1 的努力。但是,我发现使用NSSession 更好。
【解决方案2】:

您可以使用委托方法。当一个 NSURLSessionDownlaodTask 完成时,如果你的类确认它的代表将被调用。

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location

您可以通过解析该委托方法中的数据来获得响应。它会告诉你 URLSession 存储下载结果的位置。

【讨论】:

  • 我现在是IOS,你能不能更改我的代码并告诉我要从中删除什么?或者我必须保持原样并添加您的功能?还请如何在您的代码中打印消息?最后,我使用正确的方式调用网络服务?
【解决方案3】:

如果我是你,我会怎么做:

注意:这是基于你说你只从你的后端收到一个简单的字符串。如果这不是一个简单的字符串,您可能需要修改–connectionDidFinishLoading: 方法的主体。

.h

@interface UIRandomViewController : UIViewController {

    NSURLConnection *_urlConnection;
    NSMutableData *_receivedData;

    // ...

}

// ...

@end

.m

@implementation UIRandomViewController {

    // ...

    - (void)viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];

        NSURLRequest *_request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.75.1:8082/projectname/public/tests"]];
        _urlConnection = [[NSURLConnection alloc] initWithRequest:_request delegate:self startImmediately:TRUE];

        // ...

    }

    // ...

    #pragma mark - <NSURLConnectionDelegate>

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        _receivedData = nil;
    }

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        if (_receivedData == nil) _receivedData = [NSMutableData dataWithData:data];
        else [_receivedData appendData:data];
    }

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        NSString *_receivedString = [[NSString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding];
        // hello beautiful...
        NSLog(@"received data : %@", _receivedString);
    }
}

@end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多