2012-01-08 108 views
0

我可以用java这样执行卷曲使用PHP

 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, ""); 

调用一个SOAP服务器,但我的问题是我怎么能叫使用卷曲和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,我没有从肥皂服务器发现任何结果。但我的肥皂服务器是好的,由java测试。

+3

你还没有说过是什么问题。 – Ariel 2012-01-08 10:32:23

+0

嗯,你现在可以看到我的问题。 – Pritom 2012-01-17 04:52:34

回答

0

看起来好像没什么问题,除了CURLOPT_HEADER需要为真或假的(包括HTTP标头输出与否),

curl_setopt($ch, CURLOPT_HEADER, "confirmPassword"); 

应该

curl_setopt($ch, CURLOPT_HEADER, true); 

我只能猜测confirmPassword是,如果是回调,则应该使用CURLOPT_HEADERFUNCTION。但是正如Ariel指出的那样,你并没有告诉我们问题是什么。

+0

去哪里'urn:login-transport'和'confirmPassword'是被调用的函数。 – Pritom 2012-01-08 13:08:43

+0

如果你想要做的只是SOAP,我建议改为查看PHP SOAP功能,[SoapClient](http://www.php.net/manual/en/class.soapclient.php) – cvaldemar 2012-01-08 14:20:11

+0

请看我改变的问题!我已经重写了我的卷曲,但不能正常工作...... – Pritom 2012-01-09 02:04:20

0

尝试删除这一行:

curl_setopt($ch, CURLOPT_NOBODY, false); // remove body 

然后张贴的输出是什么。

+0

删除该行后的结果相同。取得http代码100,没有别的。 – Pritom 2012-01-18 01:34:41

+0

@Pritom http代码100意味着服务器正在等待请求的正文。这是一个非常不寻常的http代码,但也许肥皂使用它。你能证实PHP的url与你的java代码完全一样吗?检查实际的soap服务器日志,而不仅仅是源代码。 – Ariel 2012-01-18 06:52:44

+0

@Pritom尝试将'CURLOPT_HEADER'设置为false并查看它的功能。 – Ariel 2012-01-18 06:53:36