file_get_contents 获取不了网页内容

服务器在做验签的过程中,经常需要向渠道服务器获取某个用户的信息。一般有两种方法,curl和file_get_contents。

一般情况下,像这样用,不会有问题。

 1 public function OauthPostExecuteNew($sign,$requestString,$request_serverUrl){
 2     $opt = array("http"=>array(
 3         "method"=>"GET",
 4         "header"=>array("param:".$requestString,"oauthsignature:".$sign),
 5         "request_fulluri"=>true
 6         )
 7     );
 8
 9     $context = stream_context_create($opt);
10     $res=file_get_contents($request_serverUrl, false, $context);
11
12     return $res;
13 }

但是由于我司服务器连外网时通过代理,所以在使用stream_context_create时需要带上proxy参数,才能访问到渠道的服务器。

所以在上面代码 $opt 数组中带上"proxy"=>$proxy字段。加上之后发现file_get_contents仍然不能正常验签。

百思不解,遂到官网上来查查file_get_contents,发现并没有关于proxy的解释,然后搜stream_context_create,官方解释有这句话

params

必须是 $arr[‘parameter‘] = $value 格式的关联数组。 请参考 context parameters 里的标准资源流参数列表。

那么 我们进入context_parameters 查看参数配置。因为我们使用的是HTTP方式,所以查看HTTP context

查看跟proxy相关的

proxy string

URI 指定的代理服务器的地址。(e.g. tcp://proxy.example.com:5100).

request_fulluri boolean

当设置为 TRUE 时,在构建请求时将使用整个 URI 。(i.e. GET http://www.example.com/path/to/file.html HTTP/1.0)。 虽然这是一个非标准的请求格式,但某些代理服务器需要它。

默认值是 FALSE.

发现只配置了proxy,而并没有配置request_fulluri,遂加上request_fulluri=true,验证通过。

注意:使用proxy参数时需要把http 改为tcp 具体什么原因,不知道。等我查到了再到这里更新。

时间: 2024-08-08 00:31:26

file_get_contents 获取不了网页内容的相关文章

curl 或 file_get_contents 获取需要授权页面的方法

原文:http://blog.csdn.net/fdipzone/article/details/44475801 原文看的更清晰,因为博客园的编辑器太烂了.转来备份. 今天因工作需要,需要用 curl / file_get_contents 获取需要授权(Authorization)的页面内容,解决后写了这篇文章分享给大家 php curl 扩展,能够在服务器端发起POST/GET请求,访问页面,并能获取页面的返回数据. 例如要获取的页面:http://localhost/server.php

file_get_contents()获取https出现这个错误Unable to find the wrapper “https” – did

file_get_contents()获取https出现这个错误Unable to find the wrapper “https” – did 解决办法 ,如果你是用的服务器,可以参考这个办法,修改php配置文件(win主机),来支持https 在php.ini中找到并修改 extension=php_openssl.dll allow_url_include = On 重启服务就可以了,如果你的是linux服务器,linux下的PHP,就必须安装openssl模块,安装好了以后就可以访了.

解析PHP中的file_get_contents获取远程页面乱码的问题【转】

在工作中,遇到一个问题.我需要将一个网址(该网址是一个json数据的接口,即 打开该网址,在浏览器中显示的是json数据),我使用file_get_contents($url),数据是乱码的. 通过查询,知道有解决办法.如下: http://www.xuexijc.com/news/PHP/42412.html---------以下是网址内容 本篇文章是对PHP中的file_get_contents获取远程页面出现乱码的问题进行了详细的分析介绍,需要的朋友参考下PHP的file_get_cont

file_get_contents获取状态码

<?php //加上@ 是为了防止file_get_contents获取失败返回至命错误,影响后面的程序运行 @file_get_contents("http://tqybw.net"); var_dump($http_response_header); //$http_response_header 数组与 get_headers() 函数类似.当使用HTTP 包装器时,$http_response_header 将会被 HTTP 响应头信息填充. //$http_respon

PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题

PHP CURL与file_get_contents函数都可以获取远程服务器上的文件保存到本地,但在性能上面两者完全不在同一个级别,下面我先来介绍PHP CURL或file_get_contents函数应用例子,然后再简单的给各位介绍一下它们的一些小区别吧. 推荐方法 CURL获取 ? 1 2 3 4 5 6 7 8 9 10 11 12 <?php $c = curl_init(); $url = 'www.jb51.net'; curl_setopt($c, CURLOPT_URL, $ur

mysql正常启动后一直报错直到mysql死掉

aapt2中的渠道名不能是中文吗?SELECT查询学习(两个表的联合查询)IIS7下THINKHPHP的伪静态配置THINKPHP使用FILE_GET_CONTENTS获取不到网页内容 java自定义注解如果自动调用测试文件读取模式(用于程序优化)TP(已经解决)模块绑定域名访问问题 设计一个U盘软加密的程序删除键(BACKSPACE)的一个作用缓存只能存变量么有关静态修饰符STATIC的使用总结 mongoose中怎么设计多对多的关系TP5怎么不查数据库模拟分页数据CURL来查询当前在线QQ异

PHP下通过file_get_contents\curl的方法实现获取远程网页内容

[php]PHP中file_get_contents()与file_put_contents()函数细节详解 php函数file_get_contents(一) 案例: 早在2010年时候遇到过这样的事情,因为file_get_contents函数造成服务器挂掉的情况,现在觉得很有必要总结下. 公司里有经常有这样的业务,需要调用第三方公司提供的HTTP接口,在把接口提供的信息显示到网页上,代码是这样写的: file_get_contents("http://example.com/")

file_get_contents无法获取数据的一种情况

下面这段php代码突然不好使了,返回的 $html 为空,百思不得解.网上说法好多,但都是一家之言,解决不了我的问题.(我的解决方法也是一家之言,只能解决file_get_contents获取不到数据其中一种情况) $url = "https://www.baidu.com"; $html = file_get_contents($url); echo $html; 后来又换了好几个url测试,发现上面的代码是能获取到类似 http://www.baidu.com 的网页内容的,所以应

php fopen()和file_get_contents() 区别介绍

本文章向码农们介绍PHP使用fopen与file_get_contents读取文件实例分享及这两个函数的区别,需要的码农可以参考一下. php中读取文件可以使用fopen和file_get_contents这两个函数,二者之间没有本质区别,只是前者读取文件的php代码相比后者要复杂一点.本文章通过实例向大家讲解fopen和file_get_contents读取文件的实现代码.需要的码农可以参考一下. fopen读取文件的代码如下: <?php $file_name = "1.txt&quo