/XXSocketReqeust

无视当前路由,强制通过蜂窝网络或WiFi进行HTTP请求。一般用于WiFi无法访问网络时强制通过蜂窝网络进行请求。

Primary LanguageCMIT LicenseMIT

XXSocketReqeust

通过使用socket绑定特定接口,将http请求解析成符合HTTP协议的字符串,使用socket绑定的接口进行收发,达到无视当前路由,强制通过蜂窝网络WiFi进行HTTP请求的效果。 主要适用于连接到无法访问网络的WiFi,强制通过蜂窝网络进行HTTP请求的场景。

注意

  • NSURLRequest转换为HTTP协议数据的逻辑可以在NSData+XXSocketReqeust.m中看到,只提供对HTTP协议的GETPOST请求的部分支持。
  • 不支持HTTP协议的缓存功能

Example

@import XXSocketReqeust;

@interface XXViewController ()
@property(strong, nonatomic) XXSocketRequestManager * manager;
@end

@implementation XXViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    /// 实际使用中,一般使用单例来持有XXSocketRequestManager实例
    _manager = [[XXSocketRequestManager alloc] init];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.baidu.com"]];
    XXSocketDataTask *task = [_manager dataTaskWithRequest:request viaInterface:XXNetworkInterfaceCellular completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        NSLog(@"error is :%@\n response is %@", error, response);
        NSLog(@"responseObject: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
    }];
    [task start];
}

@end

Requirements

依赖第三方框架AFNetworkingCocoaAsyncSocket。另外依赖于nodejs的http解析框架http-parser,这个框架不提供pod支持,所以以源码的方式进行引用。

Installation

XXSocketReqeust is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'XXSocketReqeust'

Author

lixinxing, x@devlxx.com

TODO

iOS系统中肯定存在NSURLRequest转换为HTTP协议数据的功能,但是未找到这部分的内容,待有时间逆向分析,看能否提供对HTTP协议的完整支持。 如果您有方案或者思路,欢迎提交issue

License

XXSocketReqeust is available under the MIT license. See the LICENSE file for more info.