如何使用PHP發送POST請求?

實際上,我想閱讀搜索查詢以後的內容,完成以後。 問題在於URL僅接受POST方法,而且對GET方法不執行任何操做... php

我必須在domdocumentfile_get_contents()的幫助下閱讀全部內容。 有什麼方法可讓我使用POST方法發送參數,而後經過PHP讀取內容? html


#1樓

若是要那樣的話,還有另外一個CURL方法。 api

一旦掌握了PHP curl擴展的工做方式(將各類標誌與setopt()調用結合在一塊兒),這將很是簡單。 在這個例子中,我有一個變量$ xml,它保存了我準備發送的XML-我將把它的內容發佈到例子的測試方法中。 數組

$url = 'http://api.example.com/services/xmlrpc/';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);
//process $response

首先咱們初始化鏈接,而後使用setopt()設置一些選項。 這些告訴PHP咱們正在發出一個發佈請求,而且咱們正在發送一些數據,並提供數據。 CURLOPT_RETURNTRANSFER標誌告訴curl向咱們提供輸出,做爲curl_exec的返回值,而不是輸出它。 而後咱們進行呼叫並關閉鏈接-結果在$ response中。 服務器


#2樓

還有更多可使用的 app

<?php
$fields = array(
    'name' => 'mike',
    'pass' => 'se_ret'
);
$files = array(
    array(
        'name' => 'uimg',
        'type' => 'image/jpeg',
        'file' => './profile.jpg',
    )
);

$response = http_post_fields("http://www.example.com/", $fields, $files);
?>

點擊這裏瞭解詳情 dom


#3樓

若是您有機會使用Wordpress來開發應用程序(這其實是得到受權,信息頁等的便捷方法,即便是很是簡單的東西),也可使用如下代碼段: curl

$response = wp_remote_post( $url, array('body' => $parameters));

if ( is_wp_error( $response ) ) {
    // $response->get_error_message()
} else {
    // $response['body']
}

它使用不一樣的方式來發出實際的HTTP請求,具體取決於Web服務器上可用的內容。 有關更多詳細信息,請參見HTTP API文檔wordpress

若是您不想開發自定義主題或插件來啓動Wordpress引擎,則能夠在wordpress根目錄下的獨立PHP文件中執行如下操做: 函數

require_once( dirname(__FILE__) . '/wp-load.php' );

// ... your code

它不會顯示任何主題或輸出任何HTML,只需使用Wordpress API便可!


#4樓

我在尋找相似的問題,而且找到了一種更好的方法。 因此就這樣。

您只需將如下行放在重定向頁面上(例如page1.php)。

header("Location: URL", TRUE, 307); // Replace URL with to be redirected URL, e.g. final.php

我須要它來重定向REST API調用的POST請求。 該解決方案可以使用發佈數據以及自定義標頭值進行重定向。

這是參考連接


#5樓

我使用如下函數使用curl發佈數據。 $ data是要發佈的字段數組(將使用http_build_query正確編碼)。 使用application / x-www-form-urlencoded對數據進行編碼。

function httpPost($url, $data)
{
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}

@Edward提到能夠省略http_build_query,由於curl將正確編碼傳遞給CURLOPT_POSTFIELDS參數的數組,可是建議在這種狀況下,數據將使用multipart / form-data進行編碼。

我將此函數與指望使用application / x-www-form-urlencoded編碼的數據的API結合使用。 這就是爲何我使用http_build_query()。

相關文章
相關標籤/搜索