0

Androidクライアントからnav 2009 Webサービスにアクセスしようとしています。

ksoap2ライブラリとライブラリを試しjcifsました。でksoap2与えillegalargumentexceptionて与えます。transport.calljcifsauthentication error

nav Web サービスにアクセスする他の方法はありますか?

JCIFS:

protected Void doInBackground(String... arg0) {
        // TODO Auto-generated method stub


            String webserviceIP = "-------------"; // IP of the server.
            String username = "---------"; // Domain username
            String password ="--------"; // Domain password
            String deviceIP="" ;
            String domainName = "-----"; // Domain name


            DefaultHttpClient httpclient = new DefaultHttpClient();
            httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());

            httpclient.getCredentialsProvider().setCredentials(new AuthScope(webserviceIP, -1), new NTCredentials(username, password, deviceIP, domainName));

            HttpGet httpGet = new HttpGet(URL);
            httpGet.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);

            HttpResponse response = null;
            try {
                response = httpclient.execute(httpGet);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                String responseXML = EntityUtils.toString(response.getEntity());
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }



        return null;

    }

ksoap2:

                     SoapObject request=new SoapObject(NAMESPACE,METHOD_NAME);

                request.addProperty("No", arg0[0]);

                SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet=true;

                envelope.setOutputSoapObject(request);
                 HttpTransportSE transport = new HttpTransportSE(URL);
             try {
                transport.call(SOAP_ACTION, envelope);
            } catch (HttpResponseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             //SoapObject result = (SoapObject) envelope.getResponse();
4

1 に答える 1

0

私が見る限り、あなたの XML は有効ではありません。を含む ";" たとえば、タグ間。適切な XML を生成してみてください。

これがあなたが試すことができるものです:

  1. SOAPui を実行します (SNAPSHOT ビルドは NTLM 認証をサポートします)
  2. Nav WS を消費する (WSDL の URL を SOAPui にフィードする)
  3. サンプル XML 要求を生成します (そのためのコマンドがあります)。
  4. 各行の末尾にある印刷できない文字を削除します。アプリによって追加されたものは、私にとってはバグのように見え、Nav も好きではありません。
  5. <v:Header />CR の間およびCR を含むすべての文字を削除します<v:Body>。Nav WS にバグがあるようです。
  6. リクエストするパラメータを挿入します。
  7. リクエストを実行します。

エラーがある場合は、それらを修正してリクエストを機能させます。XML リクエストが機能したら、ライブラリのいずれかで同じリクエストを生成するように強制します。

于 2013-12-04T14:50:18.690 に答える