2013-01-18 83 views
1

我在PHP中有表單,我應該從表單生成一些數據並將其發送到c#web服務。從PHP網站調用我的C#Web服務方法的最佳方法是什麼?這是我的C#web服務從PHP調用C#web服務的最佳方式

public string Methode1(string Par1, int Par2, List<String> par3) 

我的列表Par3應該包含幾千個元素。我應該使用JSON還是應該在PHP中創建一個數組並通過SOAP調用將它發送給C#?我應該如何創建請求?

如果連接斷開,請求在JSON或SOAP中會發生什麼?

回答

1

我最近使用PHP調用C#ServiceStack服務。它是這樣的:

$content = json_encode($yourServiceMethodsArgumentShapeInstance); 


$curl = curl_init($endpointUrl); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $content); 

$jsonResponse = curl_exec($curl); 

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
curl_close($curl); 
+0

你能告訴我這是REST還是SOAP調用?謝謝。 –

+1

@DukaNikolau它將被歸類爲REST(使用該首字母縮略詞的鬆散解釋)。 – bluevector

+0

如果我必須從2個文本框和一個數組中選擇數據,我應該如何創建此對象$ yourServiceMethodsArgumentShapeInstance? –

2

也會發生同樣的情況。請求只是一個HTTP請求。響應的內容包含SOAP消息或任何其他內容(可能是JSON)。如果收到一條消息,則可能無法解析它,無論它是否包含JSON或SOAP XML消息。

就我個人而言,我不是SOAP的忠實粉絲,寧願選擇基於JSON的REST接口。

+0

也是個人的,但我同意。我每次都選擇REST over SOAP +1 – ZolaKt

+0

有什麼方法可以使用某種事務,所以用戶可以確保所有數據都發送到Web服務? –

+1

幾乎沒有。 TCP本身有很好的故障轉移測量,但除此之外,沒有。你可以做的最好的事情是嘗試解析結果。如果最後一個字符丟失,則XML和JSON都無效。在這種情況下,您可以拋出錯誤或再次執行請求。但通常情況下,您將有成功的請求或超時(可輕鬆捕獲)或導致500狀態碼的服務器端錯誤。我不知道有沒有收到一開始似乎沒有問題的答覆,然後竟然是停產。 – GolezTrol

相關問題