如何使用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()。

相关文章
相关标签/搜索