使用 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 请求 的相关文章

  • 在 Android 上通话结束时启动活动

    我想在通话结束时启动一项活动 找不到任何对此的参考 我该怎么做 我还没有尝试过这个 但我假设你可以运行一些服务 始终在后台运行 它利用电话状态监听器 http developer android com reference android
  • Android 中多个蓝牙连接的自定义 UUID

    我有一个 Android 设备作为服务器连接到多个蓝牙 Android 客户端 我了解 UUID 的概念以及它的独特之处 我的问题是 我可以为连接到我的服务器的所有客户端使用相同的 UUID 吗 如果没有 我如何以编程方式为我的客户端生成
  • 如何自定义菜单项的背景颜色?

    我正在尝试定制Toolbar的弹出菜单 现在我无法设置菜单项的背景颜色 我的 styles xml 如下所示
  • 我在布局上看不到任何 FirebaseRecyclerAdapter 项目

    我试图将数据从 Firebase 数据库检索到我的布局 但我看不到任何项目FirebaseRecyclerAdapter在布局中 请帮忙 我按照一个教程展示了如何做到这一点 当我运行应用程序时 我没有看到任何项目 但我可以滚动 public
  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • 如何正确释放Android MediaPlayer

    我正在尝试向我的 Android 应用程序添加一个按钮 当点击该按钮时它会播放 MP3 我已经让它工作了 但没有办法释放 mediaPlayer 对象 因此即使在我离开活动后它仍然会继续播放 如果我在react 方法之外初始化MediaPl
  • 将现有 VARCHAR 列与 Room 结合使用

    我正在尝试将现有的数据库与 Android Room 一起使用 但是 我的一个表有一个 VARCHAR 列 Room 似乎只支持 TEXT 不支持 VARCHAR 而且 sqlite 不允许修改列类型 那么 有没有办法使用Room中现有的带
  • 在 Cordova 应用程序中获取额外功能

    我们有两个 Android 应用程序 一个使用本机 Java 实现 另一个使用 Ionic 编写 Ionic 应用程序启动我的应用程序 这是使用灯插件 https github com lampaa com lampa startapp 我
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • 从 BroadcastReceiver 类调用活动方法

    我知道我可以做一个内部接收器类来调用接收器中的任何方法 但我的主要活动太大了 要做的事情也很多 因此 我需要一个扩展广播接收器的类 但它不是内部类 并且可以从我的主要活动中调用一种方法 我不知道是否可能 但我的活动是家庭活动和 single
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • Dagger 2 没有生成我的组件类

    我正在使用 Dagger 2 创建我的依赖注入 几个小时前它还在工作 但现在不再生成组件 这是我创建组件的地方 public class App extends Application CacheComponent mCacheCompon
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • Android 后台倒计时器

    我有一个 Android 应用程序 它管理一个倒计时器 类 CountDownTimer 它显示在应用程序屏幕中 以显示到达 00 00 还剩多少时间 我现在的问题是 当我按主页按钮或启动另一个应用程序时 应用程序 计时器不会在后台运行 所
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一
  • 有没有任何代码可以在android中设置壁纸而无需裁剪和缩放?

    我正在创建一个画廊应用程序 我的第一个应用程序 这是我的代码 Bitmap bmd BitmapFactory decodeStream is try getApplicationContext setWallpaper bmd catch

随机推荐

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

    如何从文本文件中提取电话号码 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