UIWebView中的基本URL错误

时间:2013-03-15 09:24:53

标签: ios objective-c uiwebview

我正在使用在UIWebView中运行的支付系统。用户在一个站点上完成表单,并被带到支付网关以处理其卡信息。付款处理完毕后,用户将被带回第一个网站上的确认页面。

在普通浏览器甚至Mobile Safari中测试时,网站按预期工作。这些网站是黑盒子,我无法改变其中的任何内容。显然,网站使用相对URL,我的问题出现是因为我的UIWebView正在尝试使用第一个域中的基本URL加载第二个域上的页面。

例如,

  1. 用户发布来自http://theform.com/page
  2. 的表单
  3. 用户被带到http://theform.com/OrderCC.aspx?orderRef=e59d7f53a693472cad8a76dd8fb64
  4. 在第二步中,用户 应该被带到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数据字符串的空白页面。我哪里错了?

0 个答案:

没有答案