使用如下代码时:
@implementation AppProtocolHandler
+ (void)registerSpecialProtocol {
静态 BOOL 初始化 = 否;
如果(!初始化){
初始化=是;
[NSURLProtocol registerClass:[AppProtocolHandler 类]];
}
}
- (void)handleRequest {
NSURLRequest *request = [自我请求];
// 通过 app:// 时为空,但通过 http:// 时有效
NSLog(@"[请求 HTTPBody]: %@", [请求 HTTPBody]);
}
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
返回是;
}
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
退货请求;
}
@结尾
对某些协议(例如 )的请求app://
将导致. 但是,如果您通过发送,那么将按预期在对象中包含请求数据。[request HTTPBody]
null
http://
[request HTTPBody]
NSData
所以你的 Javascript 应该是这样的:
$.post("http://test/hello/world", {'data':"foo bar"});
而不是这样的:
$.post("app://test/hello/world", {'data':"foo bar"});