少しクレイジーな問題があります。POST経由でフォーミュラーを投稿する必要があるIIS7があります。また、NTLM経由で認証する必要があり、SSL接続を介してこれらすべてのものを認証する必要があります。これまでのところ、サーバーに接続してデータを投稿することができました。
POST の後、2 番目のページにリダイレクトされる 302 応答が成功します。DefaultHttpClient は Web サーバーに接続して認証を行い、データを送信します。これまでのところ、すべてが機能します。しかし、クライアントは接続を閉じて2番目の接続を開きます(この動作は私を悩ませています)が、これは私の問題ではありません。2 番目の接続で、クライアントは IIS での認証方法を忘れ、401 認証エラーで中断します。
これまでのところ、これはDefaultHttpClientのソースで修正されたバグであることがわかりますが、Android はこのライブラリの古いバージョンを使用しているようです。世界中のすべての Android デバイスにあると思われるバグを修正するにはどうすればよいですか?
これが私のコミュニケーションの関連部分です:
POST /login/ HTTP/1.1
Content-Length: 21
Content-Type: application/x-www-form-urlencoded
Host: example.com
Connection: Keep-Alive
Cookie: ASPSESSION...
[the post data]
HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/7.5
WWW-Authenticate: NTLM
Content-Length: 1344
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>
POST /login/ HTTP/1.1
Content-Length: 21
Content-Type: application/x-www-form-urlencoded
Host: example.com
Connection: Keep-Alive
Cookie: ASPSESSION...
Authorization: NTLM ABC...==
[the post data]
HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
WWW-Authenticate: NTLM ABC...DEF
Content-Length: 341
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Not Authorized</TITLE>...</HTML>
POST /login/ HTTP/1.1
Content-Length: 21
Content-Type: application/x-www-form-urlencoded
Host: example.com
Connection: Keep-Alive
Cookie: ASPSESSION...
Authorization: NTLM ABC...DEF
[the post data]
HTTP/1.1 302 Moved Temporary
Cache-Control: private,no-cache
Pragma: no-cache
Content-Length: 31
Content-Type: application/json; Charset=UTF-8
Expires: Fri, 07 Dec 2012 07:01:00 GMT
Location: /login/step2.asp
Server: Microsoft-IIS/7.5
Set-Cookie: [...] path=/login/; HttpOnly;
Persistent-Auth: true
[some response]
--- 接続が閉じられ、2 番目の https 接続が開かれます ---
GET /login/step2.asp HTTP/1.1
Host: example.com
Connection: Keep-Alive
Cookie: ASPSESSION...
HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/7.5
WWW-Authenticate: NTLM
Content-Length: 1344
--- そして接続が再び閉じます ---
それを修正する方法を知っていますか?