使用php执行curl


Execute curl using php

我可以使用类似的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

然后发布输出。