baseURL不适用于UIWebView?

时间:2013-09-04 01:45:56

标签: ios objective-c uiwebview nsstring base-url

我正在创建一个UIWebView,我在其中加载了从服务器服务获取的NSString。它只是一个简单的HTML字符串,然后我将它加载到这样的UIWebView中:

urlAddress = [[NSURL alloc] initWithString:URLString];

//try removing cache so new stylesheet shows everytime- not sure if this is working yet
[[NSURLCache sharedURLCache] removeAllCachedResponses];


[InfoWebview loadHTMLString:returnedHtmlString baseURL:urlAddress];

然后由于某种原因,图像没有显示,样式表也没有工作。

例如我的baseURL看起来像这样

https://myserveraddress/

然后CSS的代码看起来像这样

<link rel="stylesheet" type="text/css" href="Data/iPhone/my.css">

我的问题是这样的 baseURL如何将自身加到该href上?如果loadHTMLString加载到WebView上,它会请求css吗?或者不同的东西

如何将infoWebView源输出到NSString?看看baseURL是否在这些href链接上加上前缀?或现在它的剂量是这样的吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

  

baseURL如何运作?

以下是AFNetworking文档中的一些有用示例:

NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];
[NSURL URLWithString:@"foo" relativeToURL:baseURL];                  // http://example.com/v1/foo
[NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL];          // http://example.com/v1/foo?bar=baz
[NSURL URLWithString:@"/foo" relativeToURL:baseURL];                 // http://example.com/foo
[NSURL URLWithString:@"foo/" relativeToURL:baseURL];                 // http://example.com/v1/foo
[NSURL URLWithString:@"/foo/" relativeToURL:baseURL];                // http://example.com/foo/
[NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/

基本上,HTML中的任何文件都将被假定在基本URL中指定的位置。如果HTML指定以/开头的文件,则域名将保持不变,但将忽略基本URL的路径。如果HTML指定以http(s)://开头的文件,则将忽略整个基本URL。

在您的示例中,网址将解析为https://myserveraddress/Data/iPhone/my.css

  

如何将infoWebView源输出到NSString?

一个简单的解决方案是:

NSString *html = [InfoWebview stringByEvaluatingJavaScriptFromString: 
                                         @"document.body.innerHTML"];

有关此主题的更多信息和讨论,请on Stack Overflow here