我需要使用来自 android 的 NAV 网络服务。 我得到了带有“Upper”功能的“Letters”代码单元。
我在我的 PC 上设置了 NAV Web 服务(NTLM 身份验证)并关闭了防火墙(这样该服务在我网络中的其他设备上可见)。输入登录/密码(我的 PC 帐户)后,可以在浏览器(也在 adroid 设备上)中访问该服务。 如果我使用 this code它在“调用”时崩溃,END_DOCUMENT 为空异常... 是因为认证吗?
如果我使用这段代码连接
HttpGet request = new HttpGet("http://[myPC'sIP]:7047/DynamicsNAV/WS/SystemService"); HttpResponse response = client.execute(request);
我收到 401 错误,但只是指定了 IP
HttpGet request = new HttpGet("http://[myPC'sIP]"); HttpResponse response = client.execute(request);
返回代码 200(正常) 如何发送凭据?我尝试了几种方法,但结果总是一样的...... 您有处理过这个问题的经验吗?
最佳答案
我使用 soap_action 来做同样的事情,它的工作就像魅力一样,看看下面的代码是否对你有帮助:
String namespace = "urn:microsoft-dynamics-schemas/codeunit/NavisionWS";
String url = "http://IP:7047/DynamicsNAV/WS/Codeunit/NavisionWS";
String soap_action = "urn:microsoft-dynamics-schemas/codeunit/NavisionWS:GetLoginInfo";
String method_name = "GetLoginInfo";
try
{
SoapObject request = new SoapObject(namespace, method_name);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE transport = new HttpTransportSE(url);
transport.call(soap_action, envelope); // Receive Error here!
SoapObject result = (SoapObject) envelope.getResponse();
great = result.toString();
}
catch (Exception e)
{
e.printStackTrace();
great = e.toString();
Toast.makeText(this, great, Toast.LENGTH_LONG).show();
}
关于navision web服务的android消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071066/