0

URL から画像を UIImageView に表示しようとしていますが、非常に奇妙な結果が見られます。私がテストしているコードのビットは以下のとおりです

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);

現在の形式では、出力ウィンドウにデータが表示されます。これは期待どおりです。ただし、2 番目の imageURL をコメントアウトして最初の URL を参照すると、空のデータが取得されるため、imageWithData によって nil が返されます。さらにややこしいのは、最初の画像が 2 番目の画像と基本的に同じであるにもかかわらず、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 に答える