0

我试图从 android 客户端访问 nav 2009 网络服务。

我试过ksoap2图书馆和jcifs图书馆。ksoap2给和给. illegalargumentexception_transport.calljcifsauthentication error

有没有其他方法可以访问导航网络服务?

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. 删除任何介于 CR 之间<v:Header /><v:Body>包括 CR)的字符。看起来 Nav WS 中存在错误。
  6. 插入参数以请求。
  7. 运行请求。

如果出现错误,请修复它们并使请求工作。在您处理 XML 请求后,强制您的任何库生成相同的请求。

于 2013-12-04T14:50:18.690 回答