2011-05-02 47 views
1

我正在使用API​​調用獲取數據。更好的選擇使用api調用獲取數據,使用什麼:fopen,file_get_contents和cURL

我想知道這將是更好的選擇

的fopen,的file_get_contents或捲曲

請幫助。

編輯 我必須做出API調用遠程系統

+0

答案取決於您嘗試獲取此數據的源。如果它是本地磁盤上的文件,那麼fopen()應該這樣做;如果它是某個地方的xml/html文件,cURL是適當的。從來沒有聽說過其他的事情,對不起。 – 2011-05-02 04:26:24

+0

@Pete Wilson:哦,我相信我必須等待更多的答案。 – 2011-05-02 04:37:35

回答

3

取決於你需要多少定製您的要求..

  • fopen返回resource,你必須使用讀取響應手動
  • file_get_contents做所有的讀數爲你的(你有手動執行使用fopen和返回結果字符串
  • curl是爲網絡交易定製具體(和根據this後,是相當多的速度比file_get_contents,並提供了一個API來設置標頭值

這三個讓你定製你的請求頭,但fopen這樣做並file_get_contents需要您使用上下文回調與stream_context_create()設置的值。

通常,當您需要對靜態數據執行簡單的GET時,file_get_contents似乎很常見。curl在做其他事情時似乎是標準的。

0

您可以使用file_get_contents()。這取決於您的配置是否打開了allow_url_fopen設置。否則,您將無法使用file_get_contents()fopen(),因爲它們都取決於此設置。在這種情況下,你需要捲曲。

您不需要使用fopen()。您可以改用file_get_contents(),否則您必須使用cURL。

+0

這是不正確的 - 你可以在'file_get_contents'中使用上下文爲'POST'請求​​設置合適的頭文件。 fopen *是*完全合法使用,但需要您自己讀取數據。話雖如此,我真的不想用一個用例來使用'fopen',但它*是可行的。 – 2011-05-02 04:48:32

+0

@Demian Brecht感謝您的信息。我不知道。我會更新我的答案。至於'fopen()',我沒有說它不能被使用。我只是說如果你可以使用'file_get_contents()',你就不需要它了。 – Wiseguy 2011-05-02 04:51:15

+0

不用擔心:)有*可能會成爲一個用戶自己讀取數據的用例,我只是想不到一個,這就是爲什麼我沒有在我的答覆中打折。否則,是的 - 我同意那部分:) – 2011-05-02 04:52:48

1

這取決於您的設置。

fopen和file_get_contents只能用於通過URL獲取數據如果allow_url_fopen已啓用。所以如果你的主機禁用了這個功能,你就不能使用它。

如果是這樣的話,你仍然可以使用cURL。 cURL還允許您在使用遠程URI調用時擁有更大的靈活性。

相關問題