oez*_*ezi 4 php java wiki soap web-services
我面临一个小问题,找不到解决方案。情况:
print_r()显示以下内容(简化为相关部分): stdClass对象(
[enthMWsT] => 0
[preisStreckeGesamt] => 28.6
[waehrung] => EUR
[applikationsDaten] => stdClass对象(
[entry] => Array(
[0] =>数组([键] =>测试[值] => 1)
[1] =>数组([key] => fahrDrucken [value] => 1)
[2] =>数组([key] => fahrLfdnr [value] => 0)
)
)
System.out.print()做时,我得到以下信息:[STDOUT] {[键:空] = [值:空],[键:空] = [值:空],[键:空] = [值:空]}
如您所见,它的元素数是正确的,但是所有键的值都是null。
我的问题是:为什么我不能在Java端获得正确的键/值?
PS:如果您需要更多信息来对此进行分析,请随时询问
编辑:
在Java端,我正在运行jBoss 4.2.2GA
在PHP端,我像这样使用SoapClient对象:
$conf['soap_wsdl'] = "http://192.168.0.213:8180/R1WebService/Service?wsdl";
$conf['soap_timeout'] = 5;
$soap = new SoapClient($conf['soap_wsdl'], array('connection_timeout' => $conf['soap_timeout']));
$bst = $soap->getBestellung()->return;
// some stuff
$return = $soap->saveBestellung(array($bst))->return;
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案:问题出在我的Java代码中。像这样在对象中声明哈希图是不够的:
private HashMap applikationsDaten;
public HashMap getApplikationsDaten() {
return applikationsDaten;
}
public void setApplikationsDaten(HashMap applikationsDaten) {
this.applikationsDaten = applikationsDaten;
}
Run Code Online (Sandbox Code Playgroud)
为了使其工作,我必须像这样为Hashmap指定数据类型:
private HashMap<String,String> applikationsDaten;
public HashMap<String,String> getApplikationsDaten() {
return applikationsDaten;
}
public void setApplikationsDaten(HashMap<String,String> applikationsDaten) {
this.applikationsDaten = applikationsDaten;
}
Run Code Online (Sandbox Code Playgroud)
更改此设置并重新部署Web服务后,它按预期工作。我将保留这个问题并将其标记为社区Wiki,而不是将其删除-也许它可以帮助寻找相同失败的人。
PS:感谢ZeissS的提示。