Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复我的应用程序的android源代码中的错误?_Android_Apache Httpclient 4.x - Fatal编程技术网

如何修复我的应用程序的android源代码中的错误?

如何修复我的应用程序的android源代码中的错误?,android,apache-httpclient-4.x,Android,Apache Httpclient 4.x,我有点疯狂的问题。我有一个IIS7,我需要通过post发布一个公式,我还需要通过NTLM和所有这些东西通过SSL连接进行身份验证。到目前为止,我设法将它连接到服务器并发布我的数据 在这篇文章之后,我会得到一个302的回复,它会将我重定向到第二页。DefaultHttpClient连接到Web服务器进行身份验证并发布数据。到目前为止一切正常。但是现在客户端关闭连接并打开第二个连接(这个行为对我来说很重要),但这不是我的问题。在第二个连接上,客户端忘记了如何在IIS上进行身份验证,并因401身份验证

我有点疯狂的问题。我有一个IIS7,我需要通过post发布一个公式,我还需要通过NTLM和所有这些东西通过SSL连接进行身份验证。到目前为止,我设法将它连接到服务器并发布我的数据

在这篇文章之后,我会得到一个302的回复,它会将我重定向到第二页。DefaultHttpClient连接到Web服务器进行身份验证并发布数据。到目前为止一切正常。但是现在客户端关闭连接并打开第二个连接(这个行为对我来说很重要),但这不是我的问题。在第二个连接上,客户端忘记了如何在IIS上进行身份验证,并因401身份验证错误而中断

到目前为止,我可以看到这是一个固定的错误,但Android似乎使用了这个库的旧版本。我怎样才能修复这个似乎存在于世界上所有android设备上的bug呢

以下是我通信的相关部分:

POST/login/HTTP/1.1
内容长度:21
内容类型:application/x-www-form-urlencoded
主持人:example.com
连接:保持活力
Cookie:ASPSESSION。。。
[发布数据]
HTTP/1.1 401未经授权
内容类型:text/html
服务器:Microsoft IIS/7.5
WWW:NTLM
内容长度:1344
...
POST/login/HTTP/1.1
内容长度:21
内容类型:application/x-www-form-urlencoded
主持人:example.com
连接:保持活力
Cookie:ASPSESSION。。。
授权:NTLM ABC==
[发布数据]
HTTP/1.1 401未经授权
内容类型:text/html;字符集=美国ascii码
服务器:Microsoft HTTPAPI/2.0
WWW认证:NTLM ABC…DEF
内容长度:341
未经授权。。。
POST/login/HTTP/1.1
内容长度:21
内容类型:application/x-www-form-urlencoded
主持人:example.com
连接:保持活力
Cookie:ASPSESSION。。。
授权:NTLM ABC…DEF
[发布数据]
HTTP/1.1 302临时移动
缓存控制:专用,无缓存
Pragma:没有缓存
内容长度:31
内容类型:application/json;字符集=UTF-8
到期时间:2012年12月7日星期五格林威治标准时间07:01:00
位置:/login/step2.asp
服务器:Microsoft IIS/7.5
设置Cookie:[…]路径=/login/;HttpOnly;
持久身份验证:true
[一些回应]
---现在连接是否关闭,第二个https连接是否打开---

GET/login/step2.asp HTTP/1.1
主持人:example.com
连接:保持活力
Cookie:ASPSESSION。。。
HTTP/1.1 401未经授权
内容类型:text/html
服务器:Microsoft IIS/7.5
WWW:NTLM
内容长度:1344
---连接再次关闭---


你知道解决这个问题的方法吗?

为什么不获取新版本的
DefaultHttpClient
的libs,并将其包含在你的项目中?

这不是解决问题的方法,只是解决我的问题的一种方法,但这可能会有所帮助。我覆盖
DefaultHttpClient
中的
createClientRequestDirector
函数,在该函数中我自己处理重定向

连接关闭的原因是我使用主机名,因此我连接到IP而不是主机名。结果是,客户端在重定向时查看是否可以通过比较源url和目标url重用连接。因此它将被比较
https://www.example.com/
https://127.0.0.1/
将出现故障并关闭会议


我的解决方案是我自己检查这部分。如果主机名和IP匹配,我将返回上次使用的IP。结果是连接可以重用,我不会在上面链接的bug中运行。

我认为这并不简单。我不确定更改java文件搜索程序的包名是否安全。我知道android团队修改了很多文件。你会嫉妒这不会破坏什么吗?我认为Android使用的是标准的DefaultHttpClient。。但是,我不能肯定。同样,除非您尝试,否则您永远不会知道,对吗?当然,现在我正在阅读
DefaultRequestDirector
类,在该类中我发现了连接关闭的原因。在使用apache代码之前,我会尝试解决这个问题。嗯。。。奇怪的方式。。我希望谷歌能尽快修复补丁。。虽然我不会指望它…我会加上这个作为一个答案。无论如何,你的想法是+1。