조금 미친 문제가 있습니다. POST를 통해 공식을 게시해야하는 IIS7이 있고 NTLM을 통해 인증해야하며이 모든 것들이 SSL 연결을 통과해야합니다. 지금까지 나는 그것을 서버에 연결하고 데이터를 게시하도록 관리했습니다.내 app 용 Android 소스에서 버그를 수정하는 방법?
POST가 끝나면 두 번째 페이지로 리디렉션되는 302 응답을 받게됩니다. DefaultHttpClient가 웹 서버에 연결하면 데이터를 인증하고 게시합니다. 지금까지 모든 것이 작동합니다. 하지만 이제 클라이언트가 연결을 닫고 두 번째 연결을 엽니 다 (이 동작은 anying me입니다). 그러나 이것은 내 문제가 아닙니다. 두 번째 연결에서 클라이언트는 IIS에서 인증하는 방법을 잊어 버리고 401 인증 오류로 중단됩니다.
지금까지는 source of DefaultHttpClient의 수정 된 버그 인 것을 볼 수 있지만 Android는이 lib의 이전 버전을 사용하는 것 같습니다. 전 세계의 모든 안드로이드 장치에있는 것처럼 보이는 버그를 어떻게 해결할 수 있습니까? 여기
내 통신의 관련 부분은 다음과 같습니다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]
--- 지금 ---
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
---과를 connetion 닫히지 않습니다 및 제 HTTPS 연결이 열립니다 연결이 다시 닫힙니다. ---
해결 방법을 알고 있습니까?
저는 그렇게 단순하지 않다고 생각합니다. Java 파일의 hounders의 패키지 이름을 변경하는 것이 안전한지 확실하지 않습니다. 그리고 안드로이드 팀이 많은 파일을 수정했다는 것을 알고 있습니다. 이게 무언가를 깨뜨리지 않을 것이라는 증거가 있습니까? – rekire
Android가 표준 DefaultHttpClient를 사용한다고 생각합니다. 그러나 확신 할 수 없습니다. 다시 한번 말하지만, 당신이 그것을 시도하지 않는다면 결코 알 수 없을 것입니다. –
확실히, curriently 나는 DefaultRequestDirector 클래스를 읽고 있는데, 여기서 연결이 닫힌 이유를 알았다. 나는 아파치 코드를 사용하기 전에 이것을 고치려고 노력할 것이다. – rekire