سؤال

لقد قمت بإنشاء عميل الصابون المصادق على 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top