KSOAP-Android JCIFS يرسل منشور HTTP فارغ
سؤال
لقد قمت بإنشاء عميل الصابون المصادق على NTLM استنادًا إلى KSOAP-Android و JCIFs. يبدو التنفيذ شيئًا من هذا القبيل:
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
يتم ملؤها مع مظروف الصابون كما هو متوقع. يبدو أن JCIFs تقوم بعملها وكذلك يمكنني رؤية استجابة تحدي NTLM التي تحدث عبر Wireshark. المشكلة هي أن هيئة الرسالة مفقودة. إنه ببساطة لاغ. بسبب هذا ، تواجه خدمة الويب 501 و InputStream
عاد هو لاغ.
أي شخص لديه أدنى فكرة لماذا سيحدث هذا؟
ملاحظة: أقوم بإزالة رأس طول المحتوى أدناه بسبب setEntity
يبدو أن يحاول تعيين هذا ولكن KSOAP قد وضعه بالفعل. أنا ببساطة أزلته وأسمح setEntity
لإعادة ضبطه.
المحلول
لقد اكتشفت أخيرًا وتدوينها هنا: http://csharpening.net/blog/؟p=271
لا تنتمي إلى StackOverflow