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

KSOAP生成的SOAP请求不会导致任何错误但无法工作

晏德佑
2023-03-14

这是我的问题:

由KSOAP2 3.6.1 android生成:不导致任何XML/SOAP错误,但webservice记录0作为数据库中的IdMaquina。插入的值错误(它不是我发送的值)。Webservice响应正常。


<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
    <v:Header />
    <v:Body>
        <IngresarMaquinaLog xmlns="http://tempuri.org/">
            <maquinaLog>
                 <IdMaquina>123</IdMaquina>
            </maquinaLog>
        </IngresarMaquinaLog>
    </v:Body>
</v:Envelope>


<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:obe="http://schemas.datacontract.org/2004/07/myService.Entidades">
    <x:Header/>
    <x:Body>
        <tem:IngresarMaquinaLog>
            <tem:maquinaLog>
                <obe:IdMaquina>4567</obe:IdMaquina>
            </tem:maquinaLog>
        </tem:IngresarMaquinaLog>
    </x:Body>
</x:Envelope>

使用作为maquinaLog定义:

{public class maquinaLog实现KvmSerializable{public int idmaquina;

    public maquinaLog(){}


    public maquinaLog(int idMaquinaField) {

        IdMaquina = idMaquinaField;

    }


    public Object getProperty(int arg0) {

        switch(arg0)
        {
            case 0:
                return IdMaquina;
        }

        return null;
    }

    public int getPropertyCount() {
        return 1;
    }

    public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) {
        switch(index)
        {
            case 0:
                info.type = PropertyInfo.INTEGER_CLASS;
                info.name = "IdMaquina";
                break;
            default:break;
        }
    }

    public void setProperty(int index, Object value) {
        switch(index)
        {
            case 0:
                IdMaquina = Integer.parseInt(value.toString());
                break;
            default:
                break;
        }
    }
}
}
</code>

用于生成SOAP请求的:{public void WebServiceCallExample(Integer idmaquina){String NAMESPACE=“http://tempuri.org/”;String METHOD_NAME=“ingresarmaquinalog”;String SOAP_ACTION=NAMESPACE+“imyservice/ingresarmaquinalog”;String URL=“http://myurl/myservice/myservice.svc”;

 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.implicitTypes = true; envelope.setAddAdornments(false); maquinaLog ML = new maquinaLog(); ML.IdMaquina = idmaquina; PropertyInfo pi = new PropertyInfo(); pi.setName("maquinaLog"); pi.setNamespace(NAMESPACE); pi.setValue(ML); pi.setType(ML.getClass()); request.addProperty(pi); envelope.setOutputSoapObject(request); envelope.addMapping(NAMESPACE, "maquinaLog",new maquinaLog().getClass()); androidHttpTransport.debug = true; try { //Log.i("app", androidHttpTransport.requestDump); androidHttpTransport.call(SOAP_ACTION, envelope); Log.i("appRQS", androidHttpTransport.requestDump); Log.i("appRSP", androidHttpTransport.responseDump); } catch(Exception e) { e.printStackTrace(); } } } 

共有1个答案

艾凌龙
2023-03-14

最后,我成功地匹配了Boomrang chrome插件查询。

在复杂对象定义中,我添加了:

public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) {
    switch(index)
    {
        case 0:
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "obe:IdMaquina";
            break;
        default:break;
    }
}
PropertyInfo pi = new PropertyInfo();
pi.setName("maquinaLog");
pi.setNamespace(NAMESPACE);
pi.setValue(ML);
pi.setType(ML.getClass());
request.addProperty(pi);
request.addAttribute("xmlns:obe","http://schemas.datacontract.org/2004/07/OberthurService.Entidades");
 类似资料:
  • 我有一个jersey服务器的例子,它适用于XML,但不适用于JSON。 如果我将此xml请求作为发送到服务器,则一切正常, 作为) 我在utilities-online.info将其翻译为JSON,并将其作为发送到相同的URL,具有相同的参数,但收到错误“400错误请求” 环境: Tomcat 7 球衣2.17 我尝试过的: 将添加到init-参数 启用init-参数为 添加了依赖项//

  • 问题内容: 我试图让到效果的,然后(在Windows 7; ñ 。一个透明安装了Cygwin所有X命令礼貌 ñ x的命令决心在命令行就好了)。 最初,我使用,但是想捕获stdout / stderr信息,所以我想使用,然后重写代码以使用它。但是,这破坏了一切。 重写的命令变为: 但是,运行此命令将产生以下错误: 重写的命令变为: 但是,运行此命令将产生以下错误: 如何使spawn运行可以正常使用的

  • 问题内容: 我正在使用HttpURLConnection连接到SSL网站。有时这些会使用自签名证书/否则会表现不佳的SSL,因此我有一种可以访问这些证书的方式。我在网上许多地方都使用推荐的典型代码: 问题是,这会导致许多站点出现SSL错误,例如: https://cong-shalom.org/ 原因: 启用javax.net.debug = all时的输出: https://www.territ

  • 我需要生成一个MM7 Soap消息,就像下面的消息一样。我可以生成MM7 Soap,但SMIL消息部分和图像/文本附件是个问题。有人知道如何生成这些零件吗? --===========FBS6FTL4PDKIMRJINCAAIDYTDJ9ULMContent-Transfer-Encoding:8BitContent-Type:Multipart/Related;type=“Application

  • 我们有修改PDF的代码,然后对修改后的PDF进行数字签名。我们使用iTextSharp库(4.1.6)的LGPL版本对PDF进行数字签名。 这是一个显示问题的示例PDF。PDF最初会打开,但随后会冻结,无法导航。无论您是否安装了我们的证书来验证此签名,问题似乎都会发生。 这个问题似乎没有始终如一地发生,问题只存在于Adobe Reader中。浏览器PDF查看器和Foxit Reader(进行签名验

  • 我正在按照http://spring.io/guides/gs/consource-web-service/#scratch中提供的分步说明学习如何使用Gradle和Spring-WS使用SOAP web服务。我已经创建了上面URL中指定的文件夹结构(即:c:/src/main/java/hello)并将build.gradle、weatherclient.java、weatherconfigur