我可以使用类似的java调用soap服务器
Call call = new Call();
URL url = new URL("http://soap-something.dash.com/servlet/rpcrouter");
call.setTargetObjectURI("urn:login-transport");
call.setMethodName("confirmPassword");
call.setParams(a vector);
resp = call.invoke(url, "");
但我的问题是,如何使用curl和php调用相同的函数,我已经尝试过了,但这可能是某种有趣的代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://soap-something.dash.com/servlet/rpcrouter?urn:login-transport");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "confirmPassword");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("username"=>"pritom", "password"=>"pritom"));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "<br/>HTTP CODE: " . $httpCode;
print_r($head);
但它回应了http代码100,我并没有从soap服务器中找到任何结果。但是我的soap服务器还可以,经过java测试。
我觉得不错,除了CURLOPT_HEADER需要为true或false(输出中是否包含HTTP标头),
curl_setopt($ch, CURLOPT_HEADER, "confirmPassword");
应该是
curl_setopt($ch, CURLOPT_HEADER, true);
我只能猜测confirmPassword是什么,如果它是回调,则应该使用CURLOPT_HEADERFUNCTION。
但正如Ariel所指出的,你并没有告诉我们问题出在哪里
尝试删除此行:
curl_setopt($ch, CURLOPT_NOBODY, false); // remove body
然后发布输出。