java - 尝试通过 php webservice 发送数组时出现异常

标签 java php arrays web-services wsdl

当我尝试在 Android 客户端获取数组对象时,出现此错误:

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG (empty) <br>@1:7 in java.io.InputStreamReader@415f48e0) 

我在这里阅读了该问题的一些答案,他们说这是因为 namespace 或 url 或soap 命令等参数错误。事实并非如此。

我正在尝试使用 nusoap 构建 PHP Web 服务并调用其中一种方法。该方法应该返回一个数组:

function GetAllWorkerUsers($id,$Password)
{
     $ret_array=array();
     $person=new Person( 12, 11, 11, "First", "Last", true, "12345", 0);
     array_push($ret_array, $person->GetWsdlObj()); 
     return $ret_array;
}

Person 类:

class WorkerUser
{
    public $id;
    public $id2;
    public $id3;
    public $name1;
    public $name2;
    public $somebool;
    public $name3;
    public $id4;


    function __construct($id, $id2, $id3, $name1, $name2, $somebool, $name3, $id4) 
    {
        $this->id = $id;
        $this->id2= $id2;
        $this->id3= $id3;
        $this->name1= $name1;
        $this->name2= $name2;
        $this->somebool= $somebool;
        $this->name3= $name3;
         $this->id4= $id4;
    }

    function GetWsdlObj()
    {
        $obj['id']= $this->id;
        $obj['id2']=$this->id2;
        $obj['id3']=$this->id3;
        $obj['name1']=$this->name1;
        $obj['name2']= $this->name2;
        $obj['somebool']=$this->somebool;
        $obj['name3']=$this->name3;
        $obj['id4']=$this->id4;
        return $obj;
    }
}

当尝试返回包含该 person 对象的数组时,就会出现问题。当我这样做时,我在客户端得到了上面的异常。 如果我尝试返回 null,它会毫无异常(exception)地工作。如果我尝试返回数组而不将 person 对象插入其中,我会得到一个空数组,没有任何异常。我尝试更改方法以仅返回不在数组中的 Person 类型的对象,它也有效。仅当尝试返回其中包含对象的数组时,我才会收到异常。您也许明白为什么吗?

最佳答案

我已经发现问题了。我使用 Visual Studio 将服务添加到新的 sln,并设法找到一种方法来查看从 Web 服务返回的 SOAP 消息。 看起来 nusoap.php 文件中有一个警告。在当前版本中,它位于第 6132 行:

$this->debug("序列化数组元素:$k, $v,类型:$typeDef[arrayType]");

由于某种原因,此警告被添加到返回的 SOAP 消息中,导致解析器无法识别消息的内容。当我注释掉该行后,问题就解决了。

关于java - 尝试通过 php webservice 发送数组时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922788/

相关文章:

php - 如何显示具有相同ID的多维数组(PHP,Laravel)

c - 在 C 中的特定位置传递数组

java - 使用 spring 和 tomcat 静态编织 eclipselink jpa

php报表工具

arrays - 在 Matlab 中将 2D 矩阵组合成 3D 矩阵

php - HTML CSS PHP, 表格设计

php加速器评论

java - 我正在为我的类(class)使用 java 在 JGrasp 中制作一个神奇的 8 球。我如何让我的代码运行?我不知道我的错误是什么或如何解决?

java - 使用 BorderLayout 将 4 个内联组件添加到 JPanel

java - 在 spring 中读取属性文件