2012-01-08 109 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