1、用file_get_contents方法
$host
=
'url'
;
$randomNumber
=
file_get_contents
(
$host
);
echo
$
$randomNumber
;
|
2、用Curl
$host
=
'url'
;
$ch
= curl_init();
curl_setopt(
$ch
, CURLOPT_URL,
$host
);
// 返回结果
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$ch
, CURLOPT_HEADER, 0);
// 使用POST提交
curl_setopt(
$ch
, CURLOPT_POST, 1);
// POST参数
$str
=
array
(
'a=1'
,
'b=2'
,
'c=3'
);
curl_setopt(
$ch
, CURLOPT_POSTFIELDS,
$str
);
// 结果
$res
= curl_exec(
$ch
);
curl_close(
$ch
);
|
使用curl库,使用curl库之前,你可能需要查看一下php.ini,查看是否已经打开了curl扩展
3、 用fopen打开url, 以get方式获取内容
<?php
$fp
=
fopen
(
$url
,
'r'
);
while
(!
feof
(
$fp
)){
$result
.=
fgets
(
$fp
,1024);
}
echo
" $result"
;
fclose(
$fp
);
?>
能否在外网机上做代理,给内网机通过代理访问外网的方式来调用开放平台的接口呢?
能访问外网的服务器上搭建一个http透明代理只允许内网访问,内网CURL指定proxy就可以了。
可以使用SSH的端口转发功能实现。
假定A是本地内网主机,B是远程提供第三方服务的主机,这两台主机之间无法连通。但是,现在还有一台C,可以同时连通前面两台主机。因此,很自然的想法就是,通过C,将A连上B。
在A上执行如下命令:
ssh -L 3002:B:3001 C
参数的意思是“本地端口:目标主机:目标主机端口"。这条命令的意思就是指定SSH绑定本地端口3002,然后指定C将所有的数据,转发到目标主机B的3001端口(你也可以指定其它端口)。
这样一来,我们只要连接A的3002端口,就等于连上了B的3001端口。这样我们还可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。
php 调用第三方接口 算不算跨域
PHP接收值无非是$_GET和$_POST,具体到HTTP协议也就是请求头和请求体。PHP这边接收数据之后进行处理,然后协定格式输出即可,这里的格式可以是json,xml或者二进制等等
后台处理的话curl 或者 fsockopen发http请求
if (strtoupper($trade_type) == "APP"){
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, $this->config['open']['ssl_cert_path']);
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, $this->config['open']['ssl_key_path']);
}else{
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, $this->config['mp']['ssl_cert_path']);
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, $this->config['mp']['ssl_key_path']);
}
}
//post提交方式
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//运行curl
$data = curl_exec($ch);
//返回结果
if($data){
curl_close($ch);
return $data;
} else {
curl_close($ch);
return "xxx";
}
}
再贴个fsockopen的,这个是为了异步的,所以没接收数据.
public function async_post($host,$path,$data){
$post = http_build_query($data);
$len = strlen($post);
$fp = @fsockopen( $host , 80, $errno, $errstr, 5);
if (!$fp) {
return false;
} else {
$out = "POST $path HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: Close\r\n";
$out .= "Content-Length: $len\r\n";
$out .= "\r\n";
$out .= $post."\r\n";
fwrite($fp, $out);
fclose($fp);
return true;
}
}