RN中的fetch网络请求



  • 在安卓中,每次请求会话的session都是一样的。。。。但在IOS中,每次请求会话的session都是新创建的。。。。我原本是,在登录成功后,把用户信息放到session中去,再次请求时,在安卓中可以成功拿 到session中保存的用户信息,但在IOS下不能取到,为Null,调试发下,IOS下的每次请求session都是新创建的。。。。各位大神有没有遇到过?什么原因?我用的是http,非https,难道是IOS对http每次请求都新建一个session会话?而不像安卓那样?



  • 1_1517968581967_QQ图片20180207095549.png 0_1517968581966_QQ图片20180207094313.png 这就是最好的证明



  • iOS的也是可以的,你只需要要原生部分拿到JSESSIONID,然后回传给RN,然后每次请求的时候设置请求头cookie就行了的



  • 改原生?什么情况???



  • 不是改原生,fetch请求本就和原生的NSURLSession有关的,你只需要要原生部分拿到JSESSIONID,然后回传给RN,然后每次请求的时候设置请求头cookie就行了的



  • NSMutableDictionary *muInitialPropertiesDic = [[NSMutableDictionary alloc] init];
    BNUserModel *userModel = [BNUserModel sharedUserModel];
    [muInitialPropertiesDic setObject:[self dictionaryWithModel:userModel] forKey:@"userInfoData"];
    [muInitialPropertiesDic setObject:KToken forKey:@"KToken"];
    NSArray *cookiesArray = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    NSDictionary *cookieDict = [NSHTTPCookie requestHeaderFieldsWithCookies:cookiesArray];
    NSString *cookie = [cookieDict objectForKey:@"Cookie"];
    [muInitialPropertiesDic setObject:cookie forKey:@"JSESSIONID"];

    // jsCodeLocation = [CodePush bundleURL];
    _rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
    moduleName:@"BNEIHExpand"
    initialProperties:muInitialPropertiesDic
    launchOptions:nil];

    然后RN那边通过this.props. JSESSIONID就可以拿到原生回传给的东西