在 android 的 ksoap2 中使用不带“i:type=”属性的 addMapping

2023-11-29

我在ksoap2中使用envelope.addMapping函数,我需要让它生成没有i:type属性的项目。

这是我的代码生成的肥皂请求

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://www.w3.org/2003/05/soap-encoding" 
    xmlns:v="http://www.w3.org/2003/05/soap-envelope">
    <v:Header>
        <ApiKey xmlns="urn:example:data">APIKey</ApiKey>
    </v:Header>
    <v:Body>
        <CreateScan xmlns="urn:example:services" id="o0" c:root="1">
            <scan i:type="n3:" xmlns:n3="">
                <n4:BaseUrl i:type="d:string" xmlns:n5="urn:example:data">http://www.example.com</n5:BaseUrl>
                <n5:DisplayName i:type="d:string" xmlns:n7="urn:example:data">Example Scan</n7:DisplayName>
            </scan>
        </CreateScan>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我需要做到这一点<scan i:type="n3:scanItem" xmlns:n3="">生成为<scan>

这是我的代码

package ksoap2.test;

import java.util.Hashtable;
import java.util.Vector;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportSE;
import org.kxml2.kdom.Element;
import org.kxml2.kdom.Node;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class ksoap2 extends Activity {
    /** Called when the activity is first created. */
    private static final String SOAP_ACTION = "http://example.com/OperationsService.svc";
    private static final String METHOD_NAME = "CreateScan";
    private static final String NAMESPACE = "urn:example:services";
    private static final String URL = "http://example.com/OperationsService.svc";
    private AndroidHttpTransport androidHttpTransport;
    TextView tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv=(TextView)findViewById(R.id.textView1);

        try {
            Element ApiKeyElement = new Element().createElement("", "ApiKey");
            ApiKeyElement.setAttribute("", "xmlns", "urn:example:data");
            ApiKeyElement.addChild(Node.TEXT, "22DF0959F20743660304CB829B3891F0");


            Element[] header = new Element[1];
            header[0]=ApiKeyElement;


            Element request = new Element().createElement(NAMESPACE, METHOD_NAME);
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);          
//              PropertyInfo scanProp = new PropertyInfo();
//              scanProp.setName("scan");
//              scanProp.setValue("");

                SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
                Scan s = new Scan();
                s.BaseUrl="http://www.example.com";
                s.DisplayName="Example";

                PropertyInfo pi = new PropertyInfo();
                pi.setName("scan");
                pi.setValue(s);
                pi.setType(s.getClass());
                Request.addProperty(pi);

                //request.addChild(Node.ELEMENT, scanElement);
                envelope.headerOut = header;
                //envelope.dotNet = true;
                envelope.setOutputSoapObject(Request);

                envelope.addMapping(null, "scanItem",new Scan().getClass());
                envelope.dotNet =false;
                String BodyClass = envelope.bodyOut.getClass().toString();
                SoapObject body = (SoapObject)envelope.bodyOut;
                int count =body.getPropertyCount();
                //envelope.encodingStyle = "test";

                //envelope.bodyOut=body;

                androidHttpTransport = new AndroidHttpTransport (URL); 
                androidHttpTransport.debug = true;
                //androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

                androidHttpTransport.call(SOAP_ACTION, envelope);
                Log.d("MyAPP", "----------------- " + androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump);
                ((TextView)findViewById(R.id.textView1)).setText(androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump);
            } catch(Exception E) {
                Log.d("MyAPP", "----------------- " + androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump);
                ((TextView)findViewById(R.id.textView1)).setText(androidHttpTransport.requestDump+"ERROR:" +"\r\n\r\n" +androidHttpTransport.responseDump  +"\r\n\r\n" +E.getClass().getName() + ": " + E.getMessage());
            }
    }



}

据我所知,问题出在envelope.addMapping(null, "scanItem",new Scan().getClass());行,即使我删除“scanItem”部分它仍然会生成<scan i:type="n3:" xmlns:n3="">

任何解决这个问题的帮助都会很棒。


好吧,看来我回答了我自己的问题。我所要做的就是添加这一行envelope.implicitTypes = true;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 android 的 ksoap2 中使用不带“i:type=”属性的 addMapping 的相关文章

  • 调用 Web 服务时“请求失败,响应为空”

    从 aspx 页面调用服务器中托管的 Web 服务时 收到类似 请求失败 响应为空 的错误 我的页面中的代码 try HttpWebRequest request1 HttpWebRequest WebRequest Create http
  • 是否仍然建议使用 AsyncTask 在后台加载 listView 项目?

    背景 我听说有一些在后台加载数据的新解决方案比 AsyncTask 更值得推荐 例如loaders http developer android com reference android content Loader html 问题 As
  • 在Android中打开浮动菜单(上下文菜单)?

    我创建了一个新菜单 名为 drmenu xml 当我按下菜单按钮时它可以正常工作 但是当用户按下按钮时我需要打开上下文菜单 下面的代码按钮只显示一个吐司 这是我的 xml 布局
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • 垂直翻转 Android Canvas

    有没有一种简单的方法可以在 Android 中翻转画布 我似乎找不到任何可以让我垂直翻转它的东西 这样 y 轴上的零就是手机屏幕的底部而不是顶部 如果解决方案不是特别快也没关系 因为我没有对画布进行任何计算密集的操作 提前致谢 Try ca
  • 通过 Intent 从文件管理器中选择文件

    我想做的 我想获取文件字符串形式的路径 我通过 Android 文件管理器选择该路径 我拥有的 Intent intent new Intent Intent ACTION GET CONTENT intent setType startA
  • 按钮上方带有文本的单选按钮

    我是 Android 新手 我需要在我的活动中添加单选按钮 但我需要将文本放在项目符号按钮的顶部 请提供任何帮助 我发现了以下内容 尽管我不明白 drawable in 选择器和 style Tab 样式是什么 顶部带有文本的单选按钮 ht
  • 获取包含位图支持的画布的 Android 视图上的点的像素颜色值

    我正在尝试找出获取给定点上像素颜色值的最佳方法View http developer android com reference android view View html 我可以通过三种方式写入视图 我设置了背景图像View setBa
  • 如何修复运行 Android 模拟器时出现 GPU Driver Issue 错误

    我的 Android 模拟器几周前运行良好 但现在出现错误 当我运行代码时 GPU 驱动程序问题错误对话框与模拟器一起弹出 当我单击 确定 时 Android 模拟器不会按预期运行应用程序 错误如下 Your GPU driver info
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • 无法在 Android Studio 中运行项目

    当我尝试在 Android Studio 中运行我的项目时 我收到以下错误消息 Execution failed for task CricHQ dexDebug gt com android ide common internal Log
  • 应用程序运行时相对布局中的元素显示不同

    我有一个ListView在片段内创建 并且它有一个搜索过滤器 问题是 XML 布局在 android studio 中显示正常 但在模拟器或手机中运行时 它显示不同 与我对齐时不正确 并且当我单击SearchView它位于选项卡导航下方 谁
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 如何为部分 Android 活动创建通用代码?

    我的申请中有 14 项活动 这 9 个活动中包含自定义标题栏和选项卡窗格 所以在这里我需要在一个地方编写这个通用代码 而不是在每个包含自定义标题栏和选项卡窗格代码的活动中编写冗余代码 即布局及其活动特定代码 有哪些可能的方法可以做到这一点
  • Android 布局仅使一个视图将自己绘制为横向,但其他所有视图都使用纵向

    我的活动布局中的主要视图元素是 VideoView 我的视频被渲染为设备的横向分辨率 但视频中的所有内容都是横向的 因此仍然需要在设备处于纵向位置时观看 即使我必须将活动设置为android screenOrientation landsc
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • 如何在 Android 的应用程序中使用 LDAP 身份验证?

    我想在我们的应用程序中添加 LDAP 身份验证 我在 Github 上搜索并找到了两个应用程序 但它们无法连接到服务器 通过ldap连接服务器的必要条件是什么 查看 UnboundID SDK 他们有一个适用于 Android 的套件 该应
  • 活动构建变体没有测试工件

    我基于 调试 构建变体创建了一个名为 bitrise 的新构建类型 使用 debug 构建变体时 经过检测的 androidTests 构建并运行良好 但是当我切换到新的 bitrise 构建变体时 出现以下错误 Process finis
  • Android 使用不同的签名密钥更新市场应用程序

    开发人员使用他的个人密钥库签署了应用程序 但它应该是公司的密钥库 现在是否可以使用公司的密钥库更新市场中的应用程序 并且仍然可以简化对用户的更新 这有什么后果吗 不可以 您必须将该应用程序作为新应用程序发布到市场上 这次是用公司的key签名

随机推荐

  • jTable 根据数据所有者条件显示\隐藏编辑和删除按钮

    我使用 jTable 来显示 CD 信息 并使用子表来显示该 CD 的评论 我希望能够仅在登录用户的行上显示编辑 删除按钮 我一直在尝试遵循以下建议 https github com hikalkan jtable issues 113 h
  • Method Of类型不能用来调用该方法

    我想动态生成一些测试 因为我必须调用一个带有要调用的方法名称的方法 然后完成所有测试设置并调用该方法 所以基本上我打电话createTest methodName 代替it methodName gt lotsOfBoringStuff 为
  • RestKit 0.20.1 如何映射父id

    给定这个 XML 负载
  • 反序列化递归 JSON 对象 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个像这样的递归 JSON 对象 表示查询表达式 where operator AND left operator fieldRef requestor value me r
  • 亚马逊在 R 中评论网络抓取:当其中一条评论来自另一个国家时,如何避免遇到错误?

    为了获得一些有趣的 NLP 数据 我刚刚开始在 R 中进行一些基本的网络抓取 我的目标是尽可能多地从亚马逊收集产品评论 我的第一次基本试验成功了 但现在遇到了错误 您可以从我的 reprex 中的网址查看 该产品有 3 页评论 如果我刮掉第
  • 切片 numpy 数组时出现意外的形状

    我有一个 4D numpy 数组 在单个维度中对多个索引进行切片时 我的轴会互换 我在这里错过了一些微不足道的事情吗 import numpy as np from smartprint import smartprint as print
  • 评估复杂的时间模式

    我想定义和评估一些非常复杂的时间模式的出现 这些模式无法通过 CRON 表达式轻松处理 有没有图书馆可以帮助我做到这一点 例如 我希望它每 25 秒发生一次 我只想发生在每月的第一天和最后一天 但每月的第一天应该让我在上午 9 00 到 1
  • 在 GLSurfaceView 而不是 SurfaceView 中播放视频

    我已经为此苦苦挣扎了两天了 按照这个答案 https stackoverflow com a 2006454 444324 提到可以通过更改 API 演示中的 MediaPlayerDemo Video 示例来在 GLSurfaceView
  • 未找到 Java 命令

    我正在尝试让 java 命令在我的计算机上运行 每当我尝试使用它时 都会收到错误 java 未被识别为内部或 我做了什么到目前为止 我已经通过系统环境变量追踪了这个问题 该变量有一个链接到 C ProgramData Oracle Java
  • SQL运行减法

    我的结果集如下 Item ExpectedQty ReceivedQty Short Item01 30 45 5 Item01 20 45 5 Item02 40 38 2 item03 50 90 10 item03 30 90 10
  • 读取具有多个命名空间的 XML 文件

    我有一个包含多个命名空间的 XML 文件 但我无法从任何节点获取值 文本
  • 传递参数以从 C# 访问查询

    我设计了一个访问查询 如下所示 SELECT Replace names lion kiss AS Expr1 FROM table1 这两个值是lion and kiss 它们是临时的 现在我希望它们是两个变量 这样我就可以从 C 向它传
  • 安装 Vaadin 后出现 NoClassDefFoundError

    我想使用 Vaadin 做一个项目 但遇到了一些问题 这就是我所做的 我下载了 Eclipse 并安装了 Vaadin for Eclipse 插件 然后 我创建了一个新的 Vaadin 7 项目 它下载了一些 Ivy 依赖项 但是当我按下
  • Java 和 PHP 之间的加密不匹配

    我正在开发一个将数据传递给第三方应用程序的加密系统 加密是用Java 完成的 解密是用PHP 完成的 尽管进行了多次尝试 我还是无法让 PHP 应用程序打开加密的字符串 出于测试目的 我创建了一个 PHP 脚本 该脚本也对数据进行加密 因此
  • 将数组转换为向量的最简单方法是什么?

    将数组转换为向量的最简单方法是什么 void test vector
  • 使用多个复选框进行 Jquery 过滤

    对于当前的项目 我正在创建一个简单的产品目录 该目录应该能够通过带有几组复选框的 Jquery 进行过滤 在一组或多组复选框中 当选中两个或更多复选框时 逻辑应为 或 而在使用两组或更多组复选框时 逻辑应为 与 我目前正在使用的一个很好的
  • 使用java和gmail发送邮件[重复]

    这个问题在这里已经有答案了 我想发送一封带有日历附件 javaxmail 的电子邮件 我创建了这个类 public void sendEmail String to Calendar calendar try String d uname
  • NativeBase 按钮​​不显示文本

    我遇到的问题是 NativeBase 中的按钮不显示其文本 我几乎使用了他们网站文档中的示例代码 但是当我渲染它时 它显示了三个我可以触摸的按钮 但没有任何标题 有任何想法吗 请看代码 App js import React from re
  • 数组元素上的简洁事件监听器

    我想知道是否有更简洁的方法来执行相同的操作 我正在尝试侦听执行相同操作的两个单独按钮上的事件 并且这两个按钮具有相同的 返回 类 并且我已将它们分配给一个名为 returnButton 的数组 我想要一个事件侦听器 它可以侦听两个按钮并将单
  • 在 android 的 ksoap2 中使用不带“i:type=”属性的 addMapping

    我在ksoap2中使用envelope addMapping函数 我需要让它生成没有i type属性的项目 这是我的代码生成的肥皂请求