我可以像这样使用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服务器找到任何结果。但我的肥皂服务器还可以,经过java测试。
答案 0 :(得分:0)
对我来说很好看,除了CURLOPT_HEADER需要为true或false(在输出中包含HTTP标头),
curl_setopt($ch, CURLOPT_HEADER, "confirmPassword");
应该是
curl_setopt($ch, CURLOPT_HEADER, true);
我只能猜测confirmPassword是什么,如果是回调,你应该使用CURLOPT_HEADERFUNCTION。
但正如Ariel指出的那样,你并没有告诉我们问题是什么。
答案 1 :(得分:0)
尝试删除此行:
curl_setopt($ch, CURLOPT_NOBODY, false); // remove body
然后发布输出结果。