当前位置: 首页 > 知识库问答 >
问题:

SoapFault服务器在使用ksoap连接到Android上的CrmDiscoveryService时无法处理请求

司马祖鹤
2023-03-14

我正在使用ksop连接到Android上的CrmDiscoveryService,问题来了:

SoapFault-faultcode:“soap:server”faultstring:“服务器无法处理请求。”faultactor:“null”详细信息:org。kxml2.kdom。Node@4061bd00

//here is namespace,endpoint,soapaction and methodname

public final static String DISCOVERY_NAMESPACE = "http://schemas.microsoft.com/crm/2007/CrmDiscoveryService/";

public final static String DISCOVERY_ENDPOINT_URL = "https://dev.crm5.dynamics.com/MSCRMServices/2007/Passport/CrmDiscoveryService.asmx";

public final static String SOAPACTION = "http://schemas.microsoft.com/crm/2007/CrmDiscoveryService/Execute";

private String MethodName = "Execute";

//below is the code connectting to crmdiscoveryservice

SoapObject rpc = new SoapObject(DISCOVERY_NAMESPACE, MethodName);

RetrievePolicyRequest retrievePolicyRequest = new RetrievePolicyRequest();

PropertyInfo info = new PropertyInfo();

info.name = "parameters";
info.type = retrievePolicyRequest.getClass();
info.setValue(retrievePolicyRequest);
rpc.addProperty(info);

HttpTransportSE ht = new HttpTransportSE(DISCOVERY_ENDPOINT_URL);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet = true;
envelope.encodingStyle = "utf-8";
envelope.setOutputSoapObject(rpc);

try {
    ht.call(SOAPACTION, envelope);

    if (envelope.getResponse() != null) {
        SoapPrimitive response = (SoapPrimitive) envelope.bodyIn;
        Log.e(tag, response.toString());
    }

} catch (IOException e) {
         e.printStackTrace();
} catch (XmlPullParserException e) {
    e.printStackTrace();
}

我自己定义了RetrievePolicyRequest。我试了很多次,还是有这个问题,有人知道怎么解决这个问题吗?

非常感谢。

共有1个答案

严昀
2023-03-14

以下是我认为您的代码可能出错的内容。

>

  • 您可能使用了错误的propertyinfo.name.例如查看htt(REMOVE this)ps://dev.crm5.dynamics.com/MSCRMServices/2007/Passport/CrmDiscoveryService.asmx?WSDL,它看起来确实像您想要的info.name="Request";。如果确实是这样,那么您将不得不修改您的复杂类型类也被请求。

    尽管您正在添加一个类作为属性的类型,该属性包含info。类型=retrievePolicyRequest。getClass() 这(出于某种原因,我仍然不理解)是不够的。您还必须将这个类“映射”到您的信封。意思是你应该

    envelope.dotNet = "true";
    envelope.encodingStyle = "utf-8";
    envelope.setOutputSoapObject(rpc);
    envelope.addMapping(DISCOVERY_NAMESPACE, "Request", new Request().getClass());
    

    这些是我立即看到的东西,下面是一些最终会帮助你的东西(它们在这样的soap调用中帮了我很多忙)。

    首先,您必须查看soapUI。你可以开始14天的试用期。有了它,您可以将soapUI指向wsdl url,并允许您测试方法调用(因此您可以轻松看到您的请求应该是什么样子,也可以看到返回的xml是什么样子)。http://www.soapui.org/ . 如果使用soap11或soap12,该程序将逐字逐句地说明该方法是什么、名称空间是什么、url是什么。。。等等。用这个!!

    其次,对于这样的复杂类型,您应该真正看到本教程:http://seesharpgears.blogspot.com/2010/10/ksoap-android-web-service-tutorial-with.html . 我从用头敲击键盘,到阅读本教程,然后让我的代码第一次工作(这从来没有发生过!)。

    祝你好运,如果你需要更多帮助,只需发布!=)

    • 乔伊

  •  类似资料:
    • 我正在使用ksop2依赖***(编译'com.google.code.ksoap2-android: ksoap2-android: 3.6.0')***命中肥皂Web服务,但得到以下异常。 异常-SoapFault-故障代码:“soap:Server”faultstring:“服务器无法处理请求--- JAVA代码

    • 问题内容: 我在跟踪为什么无法连接到特定主机时遇到问题。 通过curl或浏览器,以下命令可以正常工作: 但是,如果我使用请求: 我得到: 在网络上,我仅看到客户端问好,服务器立即断开连接,因此似乎没有任何ssl或密码不兼容。(我希望这些都是SSL层错误)在这种情况下还有什么其他问题? 我在python 3.6.1上,请求2.14.2(带有安全性额外功能)。 问题答案: 该服务器以多种方式损坏。 一

    • 这是mysql连接php脚本。它不断地显示出它的错误 警告:mysqli_connect():(HY000/1045):用户'user'@'localhost'(使用密码:YES)在第6行的C:\xampp\htdocs\index.php访问被拒绝 注意:尝试在第7行连接成功的C:\xampp\htdocs\index.php中获取非对象的属性 我听不懂,请帮帮我好吗?

    • 首先,我知道有很多类似的问题,但我所看到的似乎都不能解决我的设置(我发现的任何解决方案都不管用)。所以请容忍我。。。 我的服务器主机名是IP地址,而不是域名(即URL看起来像:) 我的服务器有一个真正的证书(即,没有自签名) 我的应用程序的plist条目字典为空(没有任何例外-出厂设置ATS) 这是生产代码,我不能禁用ATS(我也不认为我可以,因为例外只适用于显式域名,而不是IP地址) (iOS9

    • 当我运行时,会出现以下错误: 无法连接到开发服务器 包服务器正在运行,我可以直接从我的移动设备上的浏览器访问它。 我的Android设备连接到计算机并启用调试(我使用命令检查)。 我的Android版本是4.4.4,所以我不能使用命令。 我在Dev设置中设置了ID地址和端口。 USB调试已开启。 我用Windows 7. 如何修复此错误?

    • 我编写了一个简单的java套接字服务器。我可以使用java客户端连接到它。 但是,当我尝试将android设备连接到它时,它会给出以下错误: 代码如下: 这一行:似乎是罪魁祸首。 错误消息“java.net.socketexception:套接字失败:EACCES(权限被拒绝)” Android java.net.SocketException:套接字失败:EACCES(拒绝权限) Android