2014-10-09 49 views
0

我正在用PHP編寫一個博客,它必須對另一個Web服務進行HTTP API調用。我使用的PHP沒有curl支持,所以我無法使用它。如何在不捲曲的情況下從PHP進行HTTP API調用?如何直接從PHP發出HTTP請求而不支持curl?

+0

如果請求是GET請求,你可以嘗試['file_get_contents()'](http://php.net/manual/en/function.file-get-contents.php)。我不知道如何通過'POST'請求​​來使用它。返回的數據將是一個字符串,您需要根據API返回類型將其解析爲JSON或其他可用的形式。 – War10ck 2014-10-09 17:40:05

+1

@ War10ck'fgc()'與帖子請求一起工作就好了 – PeeHaa 2014-10-09 17:42:42

+0

@ War10ck我也需要POST請求... – bodacydo 2014-10-09 17:43:04

回答

2

取決於API的響應。

如果您的回覆以XML形式返回,則$response = simplexml_load_file($API_CALL)爲我工作。

如果你的回覆是json,那麼$response = json_decode(file_get_contents($API_CALL))應該可以工作。

也POST請求,你能做到這一點

$url = 'http://domain/path'; 
$data = array('key1' => 'value1', 'key2' => 'value2'); 

// use key 'http' even if you send the request to https://... 
$options = array(
    'http' => array(
     'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
     'method' => 'POST', 
     'content' => http_build_query($data), 
    ), 
); 
$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 
+0

您是否也知道如何做POST請求並上傳數據? – bodacydo 2014-10-09 17:55:49

+0

取決於API所有我創建的GET上傳函數,以便通話可以說http://domain/API.dll?API = CREATE&XML = 然後我對這些的迴應是真或假+錯誤。你創建了API還是其他人的? – wintheday 2014-10-09 18:00:16

+0

僅供參考:如果['allow_url_fopen'爲'0'](http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen),這將不起作用。 – zamnuts 2014-10-09 18:12:44

0

聽起來你將會寫作一些套接字代碼。你會想參考http://php.net/manual/en/book.sockets.php

+0

這看起來太低了......當然有人已經解決了很多次...... – bodacydo 2014-10-09 17:55:11

+1

@bodacydo:恩,是的。他們稱這個解決方案爲「捲曲」。 – chaos 2014-10-09 18:12:15

-1

您可以使用file_get_contents()或套接字。