使用 KSOAP Android 创建 SOAP 请求

2023-11-29

我需要生成一个像这样的肥皂请求。

SOAP请求

POST /TennisMasters/TennisMasters.Listener.asmx HTTP/1.1
Host: playinkstudio.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://playinktennismasters.com/authenticateUser"

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <authenticateUser xmlns="http://playinktennismasters.com/">
          <user>string</user>
        </authenticateUser>
      </soap:Body>
    </soap:Envelope>

我正在使用 KSOAP2 来构建此请求。

private static String SOAP_ACTION = "http://playinktennismasters.com/authenticateUser";
private static String NAMESPACE = "http://playinktennismasters.com/";
private static String METHOD_NAME = "authenticateUser";
private static String URL = "http://playinkstudio.com/TennisMasters/TennisMasters.Listener.asmx";

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("user", "A Json String will be here");

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER12);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    androidHttpTransport.debug = true;
    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
    } catch (Exception e) {
        e.printStackTrace();
    }

这是我调试时得到的请求。

<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 />
<v:Body>
<authenticateUser xmlns="http://playinktennismasters.com/" **id="o0" c:root="1"**>
<user **i:type="d:string"**>{"email":"[email protected]","UserDate":"Feb 22, 2012 7:01:24 PM","GearId":0,"GearValue":0,"Income":0,"Level":0,"MatchResult":0,"MatchType":0,"OfferId":0,"OpponentId":0,"Partners":0,"ExhibitionCount":0,"PowerRuns":0,"PowerServes":0,"PowerShots":0,"Seeds":0,"Energy":0,"Cash":0,"Stamina":0,"Strength":0,"SubLevel":0,"TotalEnergy":0,"TotalStamina":0,"TrainingId":0,"Agility":0,"UserId":0,"Age":0,"ActivityId":0,"gearIsGift":0}</user>
</authenticateUser>
</v:Body>
</v:Envelope>

我不知道为什么在authenticateUser.xml中添加了“id”和“c:root”等额外属性。 以及 i:type="d:String" 中的额外属性。 请有人给我一个很好的例子或教程,它可以指导我创建像上面这样的请求,真的需要帮助,谢谢。


我使用了简单的 HttpClient 和 Httppost, 请求信封的简单字符串。

        String temp = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
            + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
            + "<soap:Body>"
            + "<authenticateUser xmlns=\"http://playinktennismasters.com/\">"
            + "<user>%s</user>" + "</authenticateUser>" + "</soap:Body>"
            + "</soap:Envelope>";
    ENVELOPE = String.format(temp, user);

现在使用方法将创建发布请求剩余参数并返回响应字符串。

public String CallWebService(String url, String soapAction, String envelope) {
    final DefaultHttpClient httpClient = new DefaultHttpClient();
    // request parameters
    HttpParams params = httpClient.getParams();
    HttpConnectionParams.setConnectionTimeout(params, 10000);
    HttpConnectionParams.setSoTimeout(params, 15000);
    // set parameter
    HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), true);

    // POST the envelope
    HttpPost httppost = new HttpPost(url);
    // add headers
    httppost.setHeader("soapaction", soapAction);
    httppost.setHeader("Content-Type", "text/xml; charset=utf-8");

    String responseString = "Nothingggg";
    try {

        // the entity holds the request
        HttpEntity entity = new StringEntity(envelope);
        httppost.setEntity(entity);

        // Response handler
        ResponseHandler<String> rh = new ResponseHandler<String>() {
            // invoked when client receives response
            public String handleResponse(HttpResponse response)
                    throws ClientProtocolException, IOException {

                // get response entity
                HttpEntity entity = response.getEntity();

                // read the response as byte array
                StringBuffer out = new StringBuffer();
                byte[] b = EntityUtils.toByteArray(entity);

                // write the response byte array to a string buffer
                out.append(new String(b, 0, b.length));
                return out.toString();
            }
        };

         responseString = httpClient.execute(httppost, rh);

    } catch (Exception e) {
        e.printStackTrace();
        Log.d("me","Exc : "+ e.toString());

    }

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

使用 KSOAP Android 创建 SOAP 请求 的相关文章

  • 如何在导航抽屉上显示谷歌加个人资料图片?

    下面的代码来自github 用于在android应用程序中通过gmail登录 我做了一些修改以使用volley显示个人资料图片 它工作正常 我只想在导航抽屉中显示这些内容 个人资料图片 姓名和电子邮件 ID 我使用了 android stu
  • Android 矩形有两种不同的颜色

    如何通过使用两种不同颜色和阴影来创建矩形形状 就像上图一样 Please create a drawable file and put the below code in it
  • 检查 key 是否存在 firebase Android

    我想检查 firebase 数据库中是否存在密钥 例如 我想查找关键的 upvotes 以查看它是否存在 Here is an exmaple upvotes key does not exist in here 现在我尝试检查密钥 upv
  • 将 MapView 限制为屏幕的一半

    我试图让地图仅填充屏幕的上半部分 并在下半部分填充一些其他布局 现在我知道使用权重与表格布局相结合应该可以实现这一点 但是同一段 XML 代码可以完美地与 say 按钮配合使用 但不能与地图配合使用 截图在这里 https i stack
  • 更新到最新版本(3.1)后缺少 google-play-services_lib.jar

    我在我的应用程序中使用 Google Play 服务已经有一段时间了 没有出现任何问题 我正在使用 Eclipse 我已在 I O 后将播放服务 以及 ADT 和 SDK 更新到最新版本 但现在我无法构建我的应用程序 我已将 google
  • 如何在 Android 中签署 AAR Artifacts?

    我目前正在开发一个 AAR android 库 我想用我自己的密钥对已发布的工件进行签名 以便我可以确定我是否发布了具有相同名称和功能的假 aar 注意事项1 我希望能够以编程方式检查我的库的真实性 即使是一个伪造的库 只是伪造了我的 aa
  • 底部导航视图 - 渐变图标色调

    I have changed icon tint in BottomNavigationView using selector and gradient color as tint when icon is pressed but inst
  • VS Code:无法安装以下 Android SDK 包,因为某些许可证尚未被接受

    我想做的是使用 VS Code 构建我的 flutter 应用程序 当我运行以下命令时flutter build apk FAILURE Build failed with an exception Where Build file F y
  • Byte[] 和 java.lang.OutOfMemoryError 按位读/写文件

    我正在努力擦除 Android 中的一些可用空间 这是我的代码 private void creatingFileDelete int size int passMode File lastFile new File Environment
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 从 java 活动 *.java 启动 kotlin 活动 *.kt?

    使缓存无效 重新启动 帮助我 我在java类中的代码是 Intent intent new Intent view getActivity AddPaymentActivity class view getActivity startAct
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • 在 Android 模拟器上运行 Google 地图 v2

    我尝试在我的 Android 应用程序中实现 Google 地图 v2 但不幸的是 我收到的不是地图 而是以下消息 是否可以在 Android 模拟器 平台 4 2 上运行这些地图 目前 引用 Google Android Map API
  • Keytool 不要求别名密码

    我正在尝试生成一个密钥库文件来签署我的 React Native Android 应用程序并将其发布到 Play 商店 我正在尝试按照本文档中的描述进行操作 https facebook github io react native doc
  • RecyclerView onClick notificationItemRemoved 不会触发 onBindView

    I use notifyItemRemoved 方法我想更改其他剩余项目 但该方法没有触发onBindView 方法 除了使用notifyDataSetChanged 我想要附带的动画notifyItemRemoved method 如果您
  • ListPreferences 的异常

    这是我的第一个 Android 应用程序 在尝试使用 ListPreference 时遇到了异常 应用程序与首选项一起加载 但是当我触摸 ListPreference 条目时 应用程序 意外停止 设置 java public class S
  • 使用 Google 语音服务查询支持的语言不适用于 Android 13

    我使用以下命令查询语音服务支持的语言RecognizerIntent ACTION GET LANGUAGE DETAILS action val intent Intent RecognizerIntent ACTION GET LANG
  • Android 中应用程序在后台运行时如何显示闪屏?

    我的应用程序有一个启动屏幕 无法避免它 因为这是出于品牌原因 我想屏蔽用户界面并在后台显示启动屏幕 就像银行应用程序那样 我应该覆盖 MainActivity 中视图的 onPause 和 onResume 吗 显现
  • 使用 Ant 构建 Android 库项目

    我在使用 ant 构建 Android 库项目时遇到问题 当我尝试跑步时ant release 它说Target release does not exist in the project MyProject 然后我假设库可能无法通过发布
  • 更改 ActionMode 溢出图标

    有没有办法更改 ActionMode Overflow 图标而不更改 正常 ActionBar 的图标 我仍然需要弄清楚如何仅更改 ActionMode Actionbar 内部的溢出图标 因为我更改了默认操作栏中的溢出图标 该图标在 Ac

随机推荐

  • 提取电话号码正则表达式

    如何从文本文件中提取电话号码 x lt c Mr Bean bought 2 tickets 2 613 213 4567 or 5555555555 call either one 43 Butter Rd Brossard QC K0A
  • mySQL:连接三个表 - 如何?

    我的应用程序中有以下查询 它运行良好 但我需要它还包含与每个制造商关联的产品数量 当前查询 SELECT FROM manufacturers JOIN languages ON manufacturers lang languages i
  • MySQL 中选定值的逗号分隔字符串

    我想在 MySQL 中将选定的值转换为逗号分隔的字符串 我的初始代码如下 SELECT id FROM table level WHERE parent id 4 其产生 5 6 9 10 12 14 15 17 18 779 我想要的输出
  • jQuery 奇怪的插入问题

    我有一个列表 我不想通过 javascript 中断它来添加标题 From ul li 1 li li class afterthis 2 li li 3 li li 4 li ul To ul li 1 li li class after
  • VueJS 动态属性名称不更新值

    我正在尝试实现一个关联数组并结合访问值中的属性 键基于活动对象的值 li li
  • 为什么迭代大型 Django QuerySet 会消耗大量内存?

    该表包含大约一千万行 for event in Event objects all print event 这会导致内存使用量稳定增加到 4 GB 左右 此时行会快速打印 第一行打印之前的漫长延迟让我感到惊讶 我预计它几乎会立即打印 我也尝
  • 有没有办法获取带有非局部变量的 dict 对象? [复制]

    这个问题在这里已经有答案了 我想知道 Python 中是否有一个函数返回一个 dict 对象 其中包含用于封闭函数的非局部变量 喜欢vars or locals 对于局部变量或globals 对于全球的 更新 正如 thebjorn 所指出
  • 当我尝试克隆不存在的存储库时,如何阻止 git 询问凭据?

    我正在做一些研究 我需要下载大量的 git 存储库 大约 17k 我编写了一个非常简单的 Python 脚本 用于自动从包含 GitHub URL 的数据集进行克隆例程 first 10 data url name data project
  • 如何创建结构体数组

    我想实现一个搜索表 这是数据 20130610 Diamond CoinMate 11 7246 15 7762 2897 20130412 Diamond Bithumb 0 209 0 2293 6128 20130610 OKCash
  • 通过 youtube api 检索视频的公共统计数据

    可以获取视频的公开统计数据吗 使用这样的东西我可以获得视频的总观看次数和点赞数 https www googleapis com youtube v3 videos part statistics key API KEY id ekzHIo
  • 如何将模型绑定到 List

    我正在努力完成这样的事情 我觉得这是可能的 如果不是 可能是 MVC 框架中的疏忽 View 分部视图是可编辑的表单 强类型化为单个 MyViewModel 并使用 MyViewModel 类上的 DataAnnotations 进行验证
  • 使用“std::conditional_t”根据其模板参数定义类“typedef”

    我尝试使用std conditional t定义一个类A s typedef取决于其模板参数T template lt typename T gt class A public typedef std conditional t lt st
  • 从本地 Spark 实例读取 Google 存储 gs:// 文件系统

    问题非常简单 您有一个本地 Spark 实例 集群或仅在本地模式下运行 并且您想从 gs 读取数据 在 Spark 2 4 3 上 我需要执行以下操作才能从 Spark 本地启用 GCS 访问 我使用 JSON 密钥文件与client id
  • HTTP POST 返回错误:417“预期失败。”

    当我尝试 POST 到 URL 时 会导致以下异常 远程服务器返回错误 417 期望落空 这是示例代码 var client new WebClient var postData new NameValueCollection postDa
  • 从标头(邮递员)发出访问令牌请求时出现错误

    从标头发出访问令牌请求时 出现以下错误 错误 错误 不支持的授权类型 error description 不支持授予类型 我做错了什么或者错过了什么吗 请帮忙 附上截图 在此输入图像描述 您使用了错误的选项卡 标题应该只有 1 2 Cont
  • 如何在 C# 中从字节数组中删除和添加字节

    我有一个配置文件 cfg 用于创建命令行应用程序以将用户添加到 SFTP 服务器应用程序 cfg 文件需要为 cfg 文件中的每个条目保留一定数量的保留字节 我目前只是通过创建字节数组并将其转换为字符串 然后将其复制到文件中 将新用户附加到
  • 使用并行有线 RS232 从多个设备接收数据

    我目前正在开发一个小型应用程序 用于监控太阳能集热器产生的功率 电流 该阵列连接到 3 个逆变器 每台逆变器都有一个RS232接口 每10秒传输一行信息 当前状态 由于我想使用只有一个串行端口的设备进行监控 因此我需要想出一种能够并行读取所
  • Windows Phone 7:文件流异常

    我尝试使用 FileStream 使用命名空间 System IO 但出现异常 Attempt to access the method failed 这是代码 FileStream fs new FileStream file txt F
  • 如何使用 apache POI XWPFDocument 从 java 创建多级项目符号和编号?

    我已经阅读了许多与我的要求相关的博客和论坛 但到目前为止 我能够在获得的所有帮助下生成第一级的项目符号或编号 任何人都可以指导我如何使用 apache poi 创建多级编号 想知道 Apache POI XWPFDocument 是否支持这
  • 使用 KSOAP Android 创建 SOAP 请求

    我需要生成一个像这样的肥皂请求 SOAP请求 POST TennisMasters TennisMasters Listener asmx HTTP 1 1 Host playinkstudio com Content Type text