通过SOAP获取php使用的可工作的.NETWeb服务

通过SOAP获取php使用的可工作的.NETWeb服务,php,.net,web-services,Php,.net,Web Services,我有一个.NETWeb服务,它是标准的SOAP,我还添加了POST/GET功能。在.net中,我可以毫无问题地使用web服务,并且在使用TestPost页面时,我也可以成功地使用web服务。我收到一位php开发人员的请求,要求使用web服务,我认为这根本不是问题,但是他无法获得成功的结果。我从未使用过PHP,所以我甚至没有一个测试项目可以用于PHP方面。我相信这是他使用过的第一个网络服务,所以他自己没有很多经验 因此,我的问题是: 1) 作为一名.net开发人员,我对如何开始研究这个问题感到困惑

我有一个.NETWeb服务,它是标准的SOAP,我还添加了POST/GET功能。在.net中,我可以毫无问题地使用web服务,并且在使用TestPost页面时,我也可以成功地使用web服务。我收到一位php开发人员的请求,要求使用web服务,我认为这根本不是问题,但是他无法获得成功的结果。我从未使用过PHP,所以我甚至没有一个测试项目可以用于PHP方面。我相信这是他使用过的第一个网络服务,所以他自己没有很多经验

因此,我的问题是:

1) 作为一名.net开发人员,我对如何开始研究这个问题感到困惑。我不知道这是我的web服务中的问题还是他的php代码中的问题。因为.net和POST工作,我倾向于相信这是他的代码中的一些东西,但是我无法测试,因为我不懂php

2) 我是否需要做一些标记或其他事情来允许php正确使用我的服务

3) 有什么工具可以用来检查与php的兼容性吗

4) 有PHP知识的人能检查一下他的代码,看看是否有任何明显的问题吗

已解决:
请参阅答案中的工作代码。

与WCF和其他web服务之间缺乏一定的互操作性-这不仅仅是PHP的问题,Java库也常常无法与WCF web服务一起工作。在许多其他SO问题中有更多信息-请参见侧栏

您可以尝试(或)以“交互方式”调用您的web服务,这将有助于他了解web服务。

我们在Php中用于web服务调用,它工作得非常好。

$function=“soapcall”;
$function = "soapcall"; 
$array =array("Param1" => "parameter1", "Param2" => "parameter2", "Param3" => "parameter3"); 

$client = new SOAPClient( 
'http://url.asmx?WSDL', 
array( 
    'location' => 'url.asmx?WSDL', 
    'trace' => 1, 
    'style' => SOAP_RPC, 
    'use' => SOAP_ENCODED, 
) 
);


$result = $client->__soapCall('soapcall', array("parameters"=>$array));

foreach( $result as $r) 
{   print $r."<br>";    }
$array=array(“参数1”=>“参数1”、“参数2”=>“参数2”、“参数3”=>“参数3”); $client=新的SOAPClient( 'http://url.asmx?WSDL', 数组( '位置'=>'url.asmx?WSDL', “跟踪”=>1, 'style'=>SOAP\u RPC, “使用”=>SOAP\u编码, ) ); $result=$client->uuu soapCall('soapCall',数组(“参数”=>$array)); foreach(结果为$r) {打印$r.“
”;}
.NET服务需要有http端点(适配器)。


有时您还需要获得NTLM授权

使用
echo$client->\uu getLastRequest()并显示它打印的内容。具体地说,请检查请求中是否存在三个输入参数。@MrCode我使用PHP脚本测试页()尝试了这一点,结果如下:1db1c37d-b181-443e-8cfb-c4574c1245d955184d93-771a-44d1-ba7a-fd02fe1e15f5。很明显,这里只有两个guid。当然,这可能就是问题所在。您是否看到数组删除代码有任何错误?
\uu getLastRequest()
应该为您提供请求的完整XML。您可能需要查看源代码才能在浏览器中看到它(因为它可能隐藏xml)。用完整的XML请求更新问题,这样我们就可以看到全部内容。@MrCode对不起,请查看原始问题的XML请求代码。它显然缺少一个参数。它似乎正在删除第一个声明的参数VendorID。有什么想法吗?@MrCode我成功了!我开始研究soap xml并查找更多的php代码,我能够拼凑出工作代码。感谢SOAPUI链接,它看起来可以非常方便地帮助诊断这个问题。我已经下载并安装了SOAPUI,我的web服务已经通过WS-I合规性。我还进行了大量的测试/请求,一切似乎都按预期进行。在这一点上,我必须假设这是PHP不能很好地使用SOAP的问题。谢谢你的建议。我把它传过去。