我正在使用在UIWebView中运行的支付系统。用户在一个站点上完成表单,并被带到支付网关以处理其卡信息。付款处理完毕后,用户将被带回第一个网站上的确认页面。
在普通浏览器甚至Mobile Safari中测试时,网站按预期工作。这些网站是黑盒子,我无法改变其中的任何内容。显然,网站使用相对URL,我的问题出现是因为我的UIWebView正在尝试使用第一个域中的基本URL加载第二个域上的页面。
例如,
在第二步中,用户 应该被带到http://thepaymentgateway.com/OrderCC.aspx ...
我试图拦截对错误的基本网址的请求,并将其重新路由到这样的正确网址:
-(BOOL)webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest*)inRequest navigationType:(UIWebViewNavigationType)inType {
NSString *wrongURL = @"http://theform.com/OrderCC.aspx";
NSString *request = [[inRequest URL] absoluteString];
NSString *data = [[NSString alloc] initWithData:[inRequest HTTPBody] encoding:NSASCIIStringEncoding];
if ([request length] >= 33 && [[request substringWithRange:NSMakeRange(0, 33)] isEqualToString:wrongURL]) {
[webView loadData:[inRequest HTTPBody] MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://thepaymentgateway.com/OrderCC.aspx%@", [request substringFromIndex:33]]]];
return NO;
}
return YES;
}
运行后,我的UIWebView似乎只显示一个包含POST数据字符串的空白页面。我哪里错了?