我已经提供了RESTful网址,可以加载到我目前正在更新的wordpress网站上。这些网页已经包含RESTful网址,我只是使用较新的网址进行更新。但是,一旦我用新的切换旧的,我得到以下错误:
警告: 的file_get_contents(http://rest.vivapvd.com/agenda/52/2015 - 11-02 /) [function.file-get-contents]:无法打开流:HTTP请求 失败! HTTP / 1.1 400错误请求 /nas/...../includes/thomas_functions.php 第86行
这是第86行
function fetch_url_content($url=false){
if(empty($url)) return $url;
$contents = file_get_contents($url);
$array = json_decode($contents,true);
return $array;
}
注意:这可以使用模板页面,该页面由前一位开发人员准备。这是以下页面:
<?php
/*
Template Name: Agenda Pages
*/
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_sidebar_content' );
remove_action( 'genesis_after_content', 'genesis_get_sidebar' );
add_action( 'genesis_after_content', 'td_custom_page_sidebar' );
/*---------------------------------------------------------------------------------------*/
add_action('genesis_after_loop', 'agenda_restful_content');
function agenda_restful_content(){
global $post;
$url = get_post_meta($post->ID, 'wpcf-rest-url', true);
$agenda = fetch_url_content($url);
if($agenda){
//echo '<pre>'; var_dump($agenda); echo '</pre>';
$topictitle=false;
if(isset($agenda[0]['TopicTitle']) && !empty($agenda[0]['TopicTitle']))
echo '<h2>'.$agenda[0]['TopicTitle'].'</h2>';
echo '<table>';
echo '<tbody>';
foreach($agenda as $a){
if($topictitle===false)
$topictitle=$a['TopicTitle'];
if( $topictitle!=$a['TopicTitle'] ){
$topictitle=$a['TopicTitle'];
echo '</tbody></table>';
echo !empty($a['TopicTitle']) ? "<h2>$a[TopicTitle]</h2>" : '';
echo '<table>';
echo '<tbody>';
}
?>
<tr>
<th class="time"><?php echo date('g:i A', strtotime($a['StartDate'])) ?>-<?php echo date('g:i A', strtotime($a['EndDate'])) ?></th>
<td>
<?php echo isset($a['Title']) ? $a['Title'].'<br>' : ''; ?>
<?php echo isset($a['SpeakerNames']) ? $a['SpeakerNames'] : ''; ?>
</td>
</tr>
<?php
}
echo '</tbody></table>';
}
}
/*---------------------------------------------------------------------------------------*/
genesis();
?>
答案 0 :(得分:1)
尝试了很多东西后,出现此错误的原因是客户提供给我的文档,其中包含不可读连字符的url路径。当我复制并粘贴网址&#34; http://rest.vivapvd.com/agenda/52/11 - 02-2015 /&#34;在单词中,它出现在&#34; http://rest.vivapvd.com/agenda/52/11%E2%80%9002%E2%80%902015/&#34;
所以,我随机进入并手动输入每个网址的连字符,结果工作得很好!
感谢您的帮助!这是一个奇怪的。
答案 1 :(得分:0)
似乎无法在该地址找到有效文件。您应该尝试指定文件名...例如:http://rest.vivapvd.com/agenda/52/2015/post.php
此外,您确定在网络服务器上完全设置了REST网址吗?你有没有在mod_rewrite中设置它们(对于apache)?
答案 2 :(得分:0)
状态码400错误请求表示服务器没有问题,但您对请求做错了。 (例如,您使用的是get所需的帖子,或者您没有指定强制参数)
从该URL的代码我假设它要求您发送一个帖子请求。 File_get_contents将发出一个get请求,这可能是一个错误的请求&#34;从服务器的角度来看。
我的建议是不使用file_get_contents但至少使用php的curl模块(或者有几个高级http客户端可用于PHP)。在那里你可以指定http方法等等(例如附加标题,身份验证......)