1

我从 Android 连接到 jax-ws Web 服务时遇到问题(使用 ksoap2)。

我曾尝试寻找类似的问题,并且发现了很多问题,但他们的解决方案似乎都不适合我。

我的网络方法login接受两个字符串并输出另一个包含结果的字符串。(为了避免任何数据类型/不兼容/速度问题,我们决定只在 Web 服务中使用字符串)

我的 jax-ws 期待什么:(根据我的 ?Tester 页面)

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header/>
    <S:Body>
        <ns2:login xmlns:ns2="http://jrpg.easj/">
            <username>foobar</username>
            <password>pswd2</password>
        </ns2:login>
    </S:Body>
</S:Envelope>

ksoap2 吐出什么:(httpTransport.requestDump)

<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>
        <n0:login xmlns:n0="http://jrpg.easj/">
            <n0:username i:type="d:string">foobar</n0:username>
            <n0:password i:type="d:string">pswd2</n0:password>
        </n0:login>
    </v:Body>
</v:Envelope>

在响应中,我可以看到它总是不成功,即使登录正确。所以web服务一定不能识别用户名和密码......所以我不得不假设这是由于xml格式。或者可能是字符编码的问题,但我更倾向于它是一个 xml 格式问题。

有没有办法改变格式?
而且,顺便说一句...有人知道 v: 是干什么用的吗?
我猜 S: 是肥皂之类的,但是......好吧,我什至不知道它们中的任何一个是否重要......

我刚刚遵循了一个教程,所以有很多代码,其中一些我还没有完全理解......而且我不确定是否有任何特定的部分可以方便地回答这个问题...所以我将保持简短并省略 Java 代码。但是,如果您需要查看特定的代码,请告诉我。

我已将其他应用程序(.net/vs、java/netbeans)连接到同一个 Web 服务。而且这个过程总是那么轻松简单,任何人都可以做到……所以让我感到沮丧的是,Android 必须如此落后和困难。因此,非常感谢任何帮助。

4

1 回答 1

0

我现在可能正在解决这个问题。教程说在添加参数时使用此代码。

PropertyInfo property = new PropertyInfo();
property.setNamespace(WS_NAMESPACE);
property.setName("username");
property.setValue(username);
request.addProperty(property);

...但是没有命名空间行,参数前面的“n0:”会消失,我现在可以从 web 方法中得到预期的结果。

PropertyInfo property = new PropertyInfo();
//property.setNamespace(WS_NAMESPACE);
property.setName("username");
property.setValue(username);
request.addProperty(property);

ksoap 连接仍然会抛出很多错误,但现在至少我可以从 web 方法中得到正确的结果。所以这是一个开始。

于 2013-05-09T11:50:50.507 回答