使用PHP,是否可以发送HTTP标头file_get_contents()?
我知道您可以从您的php.ini文件中发送用户代理.但是,你能不能也发送其他信息,如HTTP_ACCEPT,HTTP_ACCEPT_LANGUAGE和HTTP_CONNECTION用file_get_contents()?
或者是否有其他功能可以实现这一目标?
我正在尝试将用户添加到我在Mailchimp中创建的列表中,但我无法在任何地方找到任何代码示例.我已经尝试弄清楚如何使用API,但我非常关注"看一个例子并学习"这类人.
我已经尝试使用API的第2版但是似乎没有任何工作,尽管在网上的例子工作,Mailchimp在他们的网站上说下面关于他们的API的早期版本:
不推荐使用版本2.0及更早版本.只有最小的支持错误修复,安全补丁 - 将适用于这些版本.
更新1:我根据TooMuchPete 关于管理订户的链接的答案做了一些进一步的研究,并修改了我在这里找到的一些代码,但它不起作用,因为函数http_build_query()不处理嵌套数组.我不知道如何处理添加订阅者的'merge_fields'部分.我目前的代码如下:
$postdata = http_build_query(
array(
'apikey' => $apikey,
'email_address' => $email,
'status' => 'subscribed',
'merge_fields' => array(
'FNAME' => $name
)
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('https://us2.api.mailchimp.com/3.0/lists/<list_id>/members/', false, $context);
var_dump($result);
die('Mailchimp executed');
Run Code Online (Sandbox Code Playgroud)
更新2:我现在使用卷曲,我已经设法得到一些几乎工作的东西.数据发送到Mailchimp但我收到错误"您的请求不包含API密钥".我猜这里需要进行身份验证.我已经尝试将它添加到http标头,但尚未奏效.请参阅下面的代码:
$apikey = '<api_key>';
$auth = base64_encode( 'user:'.$apikey );
$data = …Run Code Online (Sandbox Code Playgroud) 使用file_get_contents作为自定义SOAP实现的一部分来应用SOAP调用(我们尝试的所有库都不会正确地使用SOAP 1.2进行基于SSL +证书的身份验证).然而,困难且几乎没有文档记录的API通常返回500.响应正文中有错误详细信息,但file_get_contents似乎不允许访问它.fopen似乎也有同样的问题.
做什么?
由于大量使用流上下文来使身份验证正常工作,因此不希望转到cURL.
这是个问题.
给定网址http://www.example.com,我们可以读取页面外的前N个字节吗?
使用curl,有-r,0-499指定前500个字节.似乎解决了这个问题.
您还应该知道许多HTTP/1.1服务器没有启用此功能,因此当您尝试获取范围时,您将获得整个文档.
在python中使用urlib.类似的问题在这里,但根据康斯坦丁的评论,这是真的吗?
上次我尝试这种技术时失败了,因为实际上不可能只从HTTP服务器读取指定数量的数据,即你隐式读取所有HTTP响应,然后只读出它的前N个字节.所以最后你最终下载了整个1Gb恶意响应.
所以问题是我们如何在实践中从HTTP服务器读取前N个字节?
问候和谢谢
我从网站上获取我的应用程序数据,比如说x.com.我使用php函数file_get_contents()来获取数据.可以肯定的是,我的服务器的IP地址将显示在x.com的日志中.有没有办法隐藏我的服务器的IP而不使用代理?
如果我有代理,如何将其与file_get_contents()一起使用?
我需要在HTTP POST和HTTP GET方法中发送请求
我有一个从Table In MySql创建的XML,我需要创建一个HTTP Post来将XML插入到Web服务中.Web Service只接受SOAP,HTTP POST和HTTP GET方法.我尝试以不同的方式发出HTTP POST请求而根本没有运气.我之前从未使用过SOAP.如何进行HTTP POST或SOAP请求?
post_xml.xml:
<?xml version="1.0" encoding="utf-8"?>
<?ADF version="1.0"?>
<adf>
<prospect><id sequence="1" source="xxxs">37</id>
<requestdate>2013-07-10 06:10:42</requestdate>
<vehicle interest="buy" status="new">
<year>2013</year>
<make>12</make>
<model>21</model>
<trim>Sport</trim>
</vehicle>
<customer>
<contact>
<name part="first">Jay</name>
<name part="last">11z</name>
<email>test@gmail.com</email>
<phone time="morning" type="voice" preferredcontact="1">99999999</phone>
<address>
<street line="1">1130 E Test</street>
<city>sa</city>
<regioncode>Z</regioncode>
<postalcode>79924</postalcode>
<country>USA</country>
</address>
</contact>
</prospect>
</adf>
Run Code Online (Sandbox Code Playgroud)
client1.php(HTTP POST代码)
$xml = file_get_contents('post_xml.xml');
$url = 'http://stg.sa.com/post.asmx/';
$post_data = array ("XML" => $xml);
$stream_options = array(
$url => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded' …Run Code Online (Sandbox Code Playgroud) 我的表单需要一个验证码,我在服务器端集成方面遇到了一些麻烦.
表单包含四种类型的数据:
在确保它们都不为空之后,我想验证验证码.但是,出于某种原因,它总会返回success == false.
有人可以帮我发现我的代码有什么问题吗?
function validate($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$nameMsgErr = $emailErr = $msgSuccess = $error = "";
if(!empty($_POST['name_msg']) && !empty($_POST['email']) && !empty($_POST['subject']) && !empty($_POST['message'])) {
$url = 'https://www.google.com/recaptcha/api/siteverify';
$private_key = '------Private Key--------';
$response = file_get_contents($url . "?secret=" . $private_key . "&response=" . $_HOST['g-recaptcha-response'] . "&remoteip=" . $_SERVER['REMOTE_ADDR']);
$data = json_decode($response);
if(isset($data->success) AND $data->success == true) {
$name = validate($_POST['name_msg']);
$email = validate($_POST['email']); …Run Code Online (Sandbox Code Playgroud) 我目前正在研究PHP中的一些自动化脚本(没有HTML!).我有两个PHP文件.一个是执行脚本,另一个是接收$ _POST数据并返回信息.问题是如何从一个PHP脚本发送POST到另一个PHP脚本,获取返回变量并继续处理第一个没有HTML表单且没有重定向的脚本.我需要在不同的条件下从第一个PHP文件到另一个PHP文件发出几次请求,并根据请求返回不同类型的数据.我有这样的事情:
<?php // action.php (first PHP script)
/*
doing some stuff
*/
$data = sendPost('get_info');// send POST to getinfo.php with attribute ['get_info'] and return data from another file
$mysqli->query("INSERT INTO domains (id, name, address, email)
VALUES('".$data['id']."', '".$data['name']."', '".$data['address']."', '".$data['email']."')") or die(mysqli_error($mysqli));
/*
continue doing some stuff
*/
$data2 = sendPost('what_is_the_time');// send POST to getinfo.php with attribute ['what_is_the_time'] and return time data from another file
sendPost('get_info' or 'what_is_the_time'){
//do post with desired attribute
return $data; }
?>
Run Code Online (Sandbox Code Playgroud)
我想我需要一些将使用属性调用的函数,发送post请求并根据请求返回数据.第二个PHP文件:
<?php // …Run Code Online (Sandbox Code Playgroud)