4
我創建了基於KSOAP-Android和JCIFS的NTLM身份驗證SOAP客戶端。實施看起來是這樣的:KSoap-Android JCIFS發送空HTTP請求
public class NtlmServiceConnection implements ServiceConnection
{
public NtlmServiceConnection(final SoapConnectionInfo connectionInfo, String path)
{
httpclient = new DefaultHttpClient();
httpclient.getAuthSchemes().register(AuthPolicy.NTLM, new NTLMSchemeFactory());
//...
@Override
public InputStream openInputStream() throws IOException {
ByteArrayEntity re = new ByteArrayEntity(bufferStream.toByteArray());
post.removeHeaders("CONTENT-LENGTH");
post.setEntity(re);
HttpResponse rep = httpclient.execute(post);
InputStream stream = rep.getEntity().getContent();
return stream;
}
//....
}
從它,因爲bufferStream
與SOAP信封人口預期KSOAP正在生成正確的消息的樣子。 JCIFS似乎在做它的工作,我可以看到通過Wireshark發生的NTLM挑戰響應。問題是郵件正文缺失。它根本無效。由於此,Web服務遇到501而返回的InputStream
爲空。
任何人都知道爲什麼會發生這種情況?
注意:我刪除了下面的CONTENT-LENGTH標題,因爲setEntity
顯然試圖設置這個,但是KSOAP已經設置了它。我只是刪除它,並允許setEntity
重置它。
這是所有罰款和花花公子,但一旦成功認證,你怎麼堅持的認證,所以你可以回去使用HttpTransportSE?換句話說,我可以進行身份驗證,並獲得該響應的SoapObjects,但只要我在運行使用HttpTransportSE其他的AsyncTask,我得到一個「沒有認證挑戰找到。」 – whyoz 2013-09-17 20:48:30
您應該在評論中發佈代碼,而不是鏈接到您自己的博客。來自博客的源代碼鏈接不再起作用,如果您將博客放下,wisdome將會丟失。爲了不好,我需要這個。 – Warpzit 2014-10-17 13:37:57
去過年以來我已經看了這一點,我在博客中已經真正的壞最近。其實找到了ZIP https://dl.dropboxusercontent.com/u/3771090/MobileTfsBuildMonitor.zip – 2014-10-31 03:02:46