私はこの種の質問がこのあたりにかなりあることを知っています、それでもそれらのどれも私のために働きませんでした:(
私のAndroidアプリケーションでは、次のように発生するURLからDrawable/Bitmapを取得しようとしています。
public Bitmap loadBitmap(ISettings settings) {
Bitmap bm = null;
InputStream is = null;
BufferedInputStream bis = null;
final URL imageURL = new URL("http://domain.com/profile/image");
final String authString = settings.getUserName() + ":" + settings.getPassword();
final String authStringEnc = Base64.encodeToString(authString.getBytes(), Base64.DEFAULT);
URLConnection conn = url.openConnection();
conn.setRequestProperty("Authorization", "Basic " + authStringEnc);
conn.connect();
is = conn.getInputStream();
bis = new BufferedInputStream(is, 8192);
bm = BitmapFactory.decodeStream(bis);
return bm;
}
しかし、私がこの赤ちゃんを起動するたびに、予期しないことが起こります。
java.io.FileNotFoundException: http://domain.com/profile/image
それがあなたを助けるかもしれないので、ここにリソースのカールがあります
curl -u Username:Password http://domain.com/profile/image
およびwiresharkでのその出力:
GET /profile/image HTTP/1.1
Authorization: Basic BASICAUTHSTRING
User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2.6 libidn/1.18 libssh2/1.4.0 librtmp/2.3
Host: domain.com
Accept: */*
HTTP/1.1 200 OK
Date: Mon, 21 May 2012 18:36:11 GMT
Server: Apache/2.2.14 (Ubuntu)
Set-Cookie: JSESSIONID=65178AC10C59F372FEC901EBB71F38F7; Path=/profile
Content-Disposition: attachment; filename="profile.name.png"
Content-Length: 33195
Content-Type: image/png;charset=UTF-8
‰PNG
.. just the bytes of png which I cannot enter here as it would be too long :)
これはどのように解決できますか?
編集#1:
電話からネットワークへのトラフィックをキャプチャすると、これがわかります。これは少し明白です:)-それでも、正しくする方法がわかりません。
GET /profile/image HTTP/1.1
Authorization: Basic BASICAUTHSTRING
User-Agent: Dalvik/1.4.0 (Linux; U; Android 2.3.7; Nexus One Build/GRK39F)
Host: domain.com
Connection: Keep-Alive
Accept-Encoding: gzip
HTTP/1.1 400 Bad Request
Date: Mon, 21 May 2012 23:01:42 GMT
Server: Apache/2.2.14 (Ubuntu)
Vary: Accept-Encoding
Content-Length: 327
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.14 (Ubuntu) Server at domain.com Port 80</address>
</body></html>
編集#2:
これはどんな魔女ですか?curlを使用し、デバイスとまったく同じヘッダー情報を使用します。
curl -H "Connection: Keep-Alive" -H "Accept-Encoding: gzip" -H "Accept:" -H "User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2.6 libidn/1.18 libssh2/1.4.0 librtmp/2.3" -u Username:Password http://domain.com/profile/image
すぐに画像が表示されます:<
ここで何が起こっているのですか?