KSoap-Android\JCIFS 发送空的 HTTP 帖子
Posted
技术标签:
【中文标题】KSoap-Android\\JCIFS 发送空的 HTTP 帖子【英文标题】:KSoap-Android\JCIFS sends empty HTTP postKSoap-Android\JCIFS 发送空的 HTTP 帖子 【发布时间】:2011-04-20 03:03:54 【问题描述】:我创建了一个基于 KSOAP-android 和 JCIFS 的 NTLM 身份验证 SOAP 客户端。实现看起来像这样:
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;
//....
从外观上看,KSOAP 正在生成正确的消息,因为 bufferStream
已按预期填充了 SOAP 信封。 JCIFS 似乎正在完成它的工作,我可以看到 NTLM 挑战响应通过 Wireshark 进行。问题是缺少消息正文。它只是空的。因此,Web 服务遇到 501 并且返回的 InputStream
为空。
有人知道为什么会发生这种情况吗?
注意:我正在删除下面的 CONTENT-LENGTH 标头,因为 setEntity
显然试图设置它,但 KSOAP 已经设置了它。我只是删除它并允许setEntity
重置它。
【问题讨论】:
【参考方案1】:我终于想通了,并在这里写了一篇博客:http://csharpening.net/blog/?p=271
【讨论】:
这一切都很好,但一旦你成功验证,你如何保持验证,以便你可以重新使用 HttpTransportSE?换句话说,我可以进行身份验证并获取该响应的 SoapObjects,但是一旦我运行另一个使用 HttpTransportSE 的 AsyncTask,我就会收到“未找到身份验证挑战”。 您应该在评论中发布代码,而不是链接到您自己的博客。您来自博客的源链接不再有效,如果您将博客关闭,智慧将会丢失。可惜我需要这个。 自从我看到这个已经好几年了,最近我的博客真的很糟糕。居然找到了ZIPdl.dropboxusercontent.com/u/3771090/MobileTfsBuildMonitor.zip以上是关于KSoap-Android\JCIFS 发送空的 HTTP 帖子的主要内容,如果未能解决你的问题,请参考以下文章
Paypal IPN 协议:为啥示例中没有发送空的 HTTP 200 响应?