使用 ksoap2-android 订阅共享点 Web 服务时出现身份验证错误

2024-01-01

我正在编写一个Android应用程序,它将使用sharepoint 2010中lists.amx服务的getlist()方法。我正在使用kso​​ap2-android来处理我的soap消息。当我尝试进行身份验证时,出现预期的 xmlpullparser 异常 START_TAG... 为什么以下代码无法通过共享点服务器的身份验证?

这是我的代码:

public class SharepointList extends Activity {
private static final String SOAP_ACTION = "http://schemas.microsoft.com/sharepoint/soap/GetList";
private static final String METHOD_NAME = "GetList";
private static final String NAMESPACE = "http://schemas.microsoft.com/sharepoint/soap/" ;
private static final String URL = "http://<ip of sharepoint server>/_vti_bin/lists.asmx";

private TextView result;
private Button btnSubmit;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    result = (TextView)findViewById(R.id.textView1);
    btnSubmit = (Button)findViewById(R.id.button1);
    btnSubmit.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
            if(v.getId() == R.id.button1)
            {
                String list = getMobileTestList();
                result.setText(list);
            }

        }

    });


}
private String getMobileTestList()
{
    PropertyInfo pi = new PropertyInfo();
    pi.setName("listName");
    pi.setValue("Mobile Test List");

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty(pi);

    String authentication = android.util.Base64.encodeToString("username:password".getBytes(), android.util.Base64.DEFAULT);
    List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
    headers.add(new HeaderProperty("Authorization","Basic " +authentication));
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);


    HttpTransportSE transport = new HttpTransportSE(URL);
    try
    {
        transport.debug = true;
        transport.call(SOAP_ACTION, envelope, headers);
        //transport.call(SOAP_ACTION, envelope);
        Object result = envelope.getResponse();
        return result.toString();

    }
    catch(Exception e)
    {
        return e.toString();
    }
}
}

这是 Transport.request 转储(前面的“

  • 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:标题/>
    • v:Body>
      • GetList xmlns="http://schemas.microsoft.com/sharepoint/soap/" id="o0" c:root="1">
        • listName i:type="d:string">移动测试列表
    • /获取列表>
    • /v:正文>
  • /v:信封>

这是 Transport.response 转储(前面的“

  • !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    • HTML>
    • HEAD>
      • 标题>错误请求
      • META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii">
    • /头>
    • BODY>
      • h2>错误请求 - 无效主机名
      • hr> p>HTTP 错误 400。请求主机名无效。

也许可以尝试以下方法:

String authentication = android.util.Base64.encodeToString("username:password".getBytes(), android.util.Base64.NO_WRAP);

默认情况下,Android Base64 util 将换行符添加到编码字符串的末尾。这会使 HTTP 标头无效并导致“错误请求”。

The Base64.NO_WRAPflag 可以防止这种情况发生并保持标头完好无损。

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

使用 ksoap2-android 订阅共享点 Web 服务时出现身份验证错误 的相关文章

随机推荐

  • 从 AngularJS 调用 Laravel Controller 时无法下载 Excel 文件

    您好 我正在从 angularjs 向 laravel 控制器发送一些数据 根据这些数据 我想从 sql 表获取数据并下载为 excel 文件 但我无法下载该文件 角码 scope sendSetField function selecte
  • xamarin:无法解析程序集:System.Security

    当我尝试部署 iOS 应用程序时 出现以下错误 错误 MT2002 无法解析程序集 System Security Version 2 0 0 0 Culture neutral PublicKeyToken b03f5f7f11d50a3
  • Java:调用目标异常

    我在 Java 中动态创建类并尝试调用其中的方法 但是 有时我会得到一个java lang reflect InvocationTargetException PageGenerator1 java 动态创建 import java io
  • 无法使用 Mono Soft Debugger 远程调试,因为“调试器代理:DWP 握手失败”错误

    我已在我的应用程序中嵌入了单声道 该应用程序是支持插件的控制台应用程序 插件是 NET 程序集 一切都很好 但我想调试它们 为了在我的 C 代码中启用调试 我有 mono set dirs ASSEMBLIES DIR NAME ASSEM
  • 在 UpSetR 中使用矩阵点的调色板

    下面我构建了一个心烦意乱的情节 https www ncbi nlm nih gov pmc articles PMC4720993 我使用调色板来定义条形颜色 有没有办法对连接点的矩阵也做到这一点 library dplyr librar
  • “netcoreapp1.0”是不受支持的框架。 - Asp.Net Core 音乐商店

    我只是第一次尝试 asp net core 打开刚刚更新的音乐商店应用程序 https github com aspnet MusicStore但我无法构建 Nuget 告诉我 Errors in C development MusicSt
  • Spring Boot 基于角色的身份验证

    我有一个关于 Spring Boot 基于角色的身份验证的问题 基本上 我希望拥有用户和管理员 并且我想阻止用户访问管理资源 所以我创建了一个 SecurityConfig 类 package test import org springf
  • Javascript:将字符串拆分为二维数组

    我有一串月份和年份 var months 2010 1 2010 3 2011 4 2011 7 我想将其制作成一个二维数组 其中年份位于每个数组的第一个位置 月份位于第二个位置 换句话说 我想以这样的方式结束 var monthArray
  • IOS 应用程序加载器显示捆绑错误

    我已经浪费了3天的时间 解决 这个问题 实际上我已经尝试了我能想象到的一切 但一无所获 当我的应用程序二进制上传时 我收到以下错误 错误 ITMS 9000 此捆绑包无效 armv7 需要包含 armv7 架构 在软件资产 软件资产 MZI
  • 如何禁用特定 @FeignClient 上的 eureka 查找

    我有一个微服务使用 FeignClient主要是与其他微服务对话 使用 Eureka 服务发现机制可以完美地实现这一点 现在我迫切需要使用 FeignClient连接到外部系统并仍然使用如下所示的配置执行负载平衡 Feign client
  • WPF MEF + Prism 初始区域加载

    我在 WPF 中使用 MEF 和 Prism 编写了一个具有三个不同区域的 MVVM 应用程序 代码跨两个模块 在 App Config 中发现 我的所有导航命令和结构都工作得很好 但我感到困惑的一件事是如何设置在应用程序启动时加载到每个区
  • 如何在不序列化的情况下将对象作为输入传递给 WorkManager?

    我需要将复杂的对象传递给 WorkManager 或者我需要序列化包含 Livedata 和 Date 的对象 它抛出 java lang IllegalArgumentException Key cabId2 has invalid ty
  • R 中嵌套随机效应模型的模型预测?

    我正在尝试拟合具有随机效应的混合模型 lmer基于数据集 df 的模型这个例子在这里 https stackoverflow com a 76510072 7258020 但是 我遇到了一个错误 指出 times 参数无效 有关如何修复它的
  • 强制打开“另存为...”弹出窗口,在文本链接中打开,单击查看 HTML 格式的 PDF

    我的网站上有一些大尺寸的 PDF 目录 我需要将它们链接为下载 当我用谷歌搜索时 我发现了下面提到的这样的事情 它应该打开 另存为 点击链接时弹出 但它不起作用 当我链接到如下文件时 它只是链接到文件并尝试打开该文件 a href file
  • Java中解析固定宽度文本日志的策略

    我试图找出如何最好地解析以下日志文 件 分割由水平线分隔的每个部分并提取各种数据 例如 COMPANY123 BIMMU 日期 2 18 等 然后创建一个字符串 其中包含由水平线分隔的部分中包含的所有其他数据 即 我想创建一个 语句 对象数
  • 如何关闭冻结的 SSH 会话?

    有时 由于互联网连接不良 与远程服务器的 SSH 会话会无限期冻结 是否可以在不关闭终端的情况下关闭会话 按以下三个键 Enter 波形符 时期 这是 断开连接 功能 如ESCAPE CHARACTERS的部分ssh man page
  • 快速聚焦文本字段

    我在注册屏幕上有 4 个文本字段 我将其设置为当用户在每个文本字段上按 下一步 时 下一个文本字段将获得焦点 代码如下 func textFieldShouldReturn textField UITextField gt Bool if
  • Enterprise Architect 项目编程语言

    在Enterprise Architect中 当我对类进行建模并指定该类的实现语言 然后在用例中使用该类的实例时 用例中实例的实现语言不是该类的实现语言 而是默认值 有没有办法让Enterprise Architect使用该类设定的实现语言
  • 输出具有多个工作表的单个 Excel 文件

    Talend Open Studio for Data Integration 中是否有一个组件能够输出单个 Excel 文件 但其中包含 2 个单独的工作表 我想将原始文件中的一些列分隔到另一个工作表中 并将另一组列分隔到第二个工作表中
  • 使用 ksoap2-android 订阅共享点 Web 服务时出现身份验证错误

    我正在编写一个Android应用程序 它将使用sharepoint 2010中lists amx服务的getlist 方法 我正在使用kso ap2 android来处理我的soap消息 当我尝试进行身份验证时 出现预期的 xmlpullp