0

我正在尝试在 UIImageView 中显示来自 URL 的图像,但我看到了一些非常奇特的结果。我正在测试的代码如下

imageURL = @"http://images.shopow.co.uk/image/user_dyn/1073/32/32";
imageURL = @"http://images.shopow.co.uk/assets/profile_images/default/32_32/avatar-male-01.jpg";

NSURL *imageURLRes = [NSURL URLWithString:imageURL];
NSData *imageData = [NSData dataWithContentsOfURL:imageURLRes];
UIImage *image = [UIImage imageWithData:imageData];

NSLog(@"Image Data: %@", imageData);

在它的当前形式中,我可以在输出窗口中看到我所期望的数据。但是,如果注释掉第二个 imageURL,所以我引用第一个我得到空数据,因此 imageWithData 返回 nil。可能更令人困惑的是,第一个图像与第二个基本相同,但它是通过 PHP 处理脚本。我几乎可以肯定这不是导致问题的脚本,因为如果我改用它

imageURL = @"http://images.shopow.co.uk/image/product_dynimg/389620/32/32"

显示图像,这使用相同的图像处理脚本。我正在努力寻找会导致这种情况发生的图像中的任何差异。任何帮助,将不胜感激。

4

1 回答 1

0

这与服务器配置有关。

$ curl -v http://images.shopow.co.uk/assets/profile_images/default/32_32/avatar-male-01.jpg 

返回非零Content-Length和实际图像位。当我这样做时:

$ curl -v http://images.shopow.co.uk/image/user_dyn/633/32/32

我得到以下标题和零长度响应:

> GET http://images.shopow.co.uk/image/user_dyn/633/32/32 HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: images.shopow.co.uk
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 OK
< Date: Thu, 18 Oct 2012 10:51:31 GMT
< Server: Apache/2.2.3 (Red Hat)
< X-Powered-By: PHP/5.3.15
< Vary: Accept-Encoding,User-Agent
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Proxy-Connection: Keep-Alive
< Connection: Keep-Alive

令人惊讶的是,在浏览器中,两个链接都可以正常工作并返回图像。

更新:我想通了。它是用户代理。试试这样:

$ curl -v \
    -A "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" \
    http://images.shopow.co.uk/image/user_dyn/633/32/32

你得到你的图像位。

于 2012-10-18T10:53:12.700 回答