在iOS端直接获取七牛公开空间的文件list

看七牛api看到晕了。urlsafebase64、hmacsha1等用于生产token的代码都找好了。post过去,居然没有返回。搞了几天了。精神已经崩毁。求解救。

    NSString* AccessKey = @"MY_ACCESS_KEY";
    NSString*SecretKey = @"MY_SECRET_KEY";
    NSString*host=@"rsf.qbox.me";
    NSURL*quote=[NSURL URLWithString: @"/list"];
    NSString*signingStr = [[NSString stringWithFormat:@"%@",quote] stringByAppendingString:@"\n"] ;
    NSString*sign=[signingStr HmacSha1WithSecret:SecretKey];
    NSString*accesstoken=[[AccessKey stringByAppendingString:@":"]stringByAppendingString:sign];
    NSLog(@"accesstoken   %@",accesstoken);
    NSString*token=[@"QBox " stringByAppendingString: accesstoken];
    NSString*URL=[host stringByAppendingString:@"/list"];
    NSLog(@"%@",URL);
    NSLog(@"url:%@ token:%@",URL,token);

    NSURL *url = [NSURL URLWithString:URL];
    //请求初始化,可以在这针对缓存,超时做出一些设置
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                           cachePolicy:NSURLRequestReloadIgnoringCacheData
                                                       timeoutInterval:10];
  /*  NSString *post = @"bucket=homlau";

    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
     [request setHTTPBody:postData];
       [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
   */
    [request setHTTPMethod:@"POST"];

    [request setValue:host forHTTPHeaderField:@"Host"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    [request setValue:token forHTTPHeaderField:@"Authorization"];

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString*str6=[[NSString alloc]initWithData:returnData  encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str6);
阅读 3.3k
3 个回答

list操作本来就应该是服务端进行执行的,为什么一定要客户端进行执行,即使list在客户端执行,list操作所需要的管理凭证其实也是可以服务端生成的;如果post请求没有返回结果,能否抓包贴一下post请求的完整http request(包括header),以及七牛这边返回的response。

请麻烦把代码也贴一下。
这里的代码 token 没有做过base64 编码,可以参考java 的处理方式。

新手上路,请多包涵

为什么总是要回答 一定要服务器端返回 服务器端返回 就自己一个用不行吗 不发布不行吗 就说下怎么解决不就好了吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进