当前位置:  开发笔记 > 编程语言 > 正文

使用POST而不是GET将数据传递到目标c

如何解决《使用POST而不是GET将数据传递到目标c》经验,为你挑选了1个好方法。

我一直在使用url拦截方法将数据从javascript传递到目标C,方法是将数据作为url编码参数传递,并使用NSURLProtocol来拦截请求但是我现在想要发送更大量的数据,比如10,000个字符长的字符串,但是这个在GET请求中似乎不切实际.对?

有没有办法让目标c拦截从UIWebView发送的POST数据?
如果是这样,我仍然使用NSURLProtocol,如何获取POST数据?
如果没有,我可以通过其他方式将大量数据从UIWebView传递到目标c吗?



1> Travis..:

使用代码时:

@implementation AppProtocolHandler

+ (void)registerSpecialProtocol {
    static BOOL inited = NO;

    if (!inited) {
        inited = YES;
        [NSURLProtocol registerClass:[AppProtocolHandler class]];
    }
}

- (void)handleRequest {
    NSURLRequest *request = [self request];

    // null when via app:// but works when via http://
    NSLog(@"[request HTTPBody]: %@", [request HTTPBody]);
}

+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
    return YES;
}

+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
    return request;
}

@end

对某些协议(例如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"});

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有