Reputation: 117
I'm having trouble displaying an image in a UIWebView.
I retrieve html content from a feed.
In this content there is a <img src=.../>
tag.
Loading this content into a UIWebview, the image doesn't display, showing only the missing image "?" instead.
It seems that the link to the image in src= contains some interesting characters and that these need to be escaped in order to get the correct image.
For example, in the feed I get the following which doesn't work:
<img src="http://www.somedomain.com/0,,10268~9189636,00-1.jpg" />
However, if I use the following escaped link, it does work:
<img src="http://www.somedomain.com/0%2C%2C10268%7E9189636%2C00-1.jpg" />
The problem then arises that if I escape the html content (using the Google gtm_stringByEscapingForHTML function, for example), the whole lot gets escaped and the UIWebview just ends up displaying the html as a string of html. For example:
"<p>Hello this is a test</p><img src="someimagesource.jpg"/>......"
I actually used to be able to see the images, but can't prove that something has changed at the back end. I haven't changed anything at the front end.
I guess my questions are, therefore:
Thanks very much in advance for your help.
Upvotes: 2
Views: 3238
Reputation: 117
The issue was indeed with the back end. I performed multiple tests and discovered that the images worked when hosted on my own server. I then found out that for mobile Safari, the back end was redirecting requests to a mobile site. This meant that requests for images on their server that came from mobile WebKit were being redirected to an html page. Of course, an html page is not a valid src for an img tag...
Upvotes: 1
Reputation: 986
A malformed link like that isn't guaranteed to work in a browser. Showing the broken link ("?") image is an appropriate response. I think the problem is on the back end and you shouldn't be getting links without escaped characters in your html feed. If you don't have any control over this, all you can do is parse the incoming html for <img>
and <a>
tags, replacing any src
or href
attributes with escaped characters, and even that can't be guaranteed to work 100% of the time.
EDIT: I was able to get this working for image source attributes that have commas in them just fine.
- (void)viewDidLoad {
[super viewDidLoad];
//imageWV is a UIWebView belonging to this UIViewController
NSString * test = @"test test test<img src=\"http://my.domain.com/~tilde-directory/images/namewith,,commas.png\"></img>";
[imageWV loadHTMLString:test baseURL:nil];}
This loads the image with no problem. Perhaps there is something else going on here...
Upvotes: 0