php transport,DataTransport.php

/**

* Created by PhpStorm.

* User: abcdlzy

* Date: 14/12/3

* Time: 下午6:13

*

* build on https://github.com/cowboy/php-simple-proxy/

*/

class DataTransport

{

public static $response="";

public static $header="";

public static $errMsg="";

public static $CURL_enable_jsonp = false;

public static $CURL_enable_native = true;

public static $CURL_valid_url_regex = '/.*/';

public static $CURL_SendCookie="";

public static $CURL_SendSession="";

public static $CURL_mode="native";

public static $CURL_CallBack="";

public static $CURL_user_agent="";

public static $CURL_full_headers="1";

public static $CURL_full_status='1';

public static function go($url, $postdata='',$mode="native")

{

if(function_exists("curl_init")){

return self::Post_CURL($url, $postdata,$mode);

}

else

{

return self::Post_FILE_GET_CONTENTS($url, $postdata);

}

}

private static function Post_CURL($url, $postdata=null,$mode="native"){

self::$errMsg="";

self::$response="";

self::$header="";

if ( !$url ) {

// Passed url not specified.

$contents = 'ERROR: url not specified';

$status = array( 'http_code' => 'ERROR' );

} else if ( !preg_match( self::$CURL_valid_url_regex, $url ) ) {

// Passed url doesn't match $valid_url_regex.

$contents = 'ERROR: invalid url';

$status = array( 'http_code' => 'ERROR' );

} else {

$ch = curl_init( $url );

if ( $postdata!=null ) {

curl_setopt( $ch, CURLOPT_POST, true );

@curl_setopt( $ch, CURLOPT_POSTFIELDS, $postdata );

}

if ( self::$CURL_SendCookie ) {

$cookie = array();

foreach ( $_COOKIE as $key => $value ) {

$cookie[] = $key . '=' . $value;

}

if ( self::$CURL_SendSession ) {

$cookie[] = SID;

}

$cookie = implode( '; ', $cookie );

curl_setopt( $ch, CURLOPT_COOKIE, $cookie );

}

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));

curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt( $ch, CURLOPT_USERAGENT, self::$CURL_user_agent ? self::$CURL_user_agent : @$_SERVER['HTTP_USER_AGENT'] );

$getresponse = curl_exec($ch);

list( $header, $contents ) = preg_split( '/([\r\n][\r\n])\\1/', $getresponse, 2 );

if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {

$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);

self::$header = substr($getresponse, 0, $headerSize);

Self::$response = substr($getresponse, $headerSize);

}

$status = curl_getinfo( $ch );

curl_close( $ch );

}

// Split header text into an array.

$header_text = preg_split( '/[\r\n]+/', $header );

if ( $mode == 'native') {

if ( !self::$CURL_enable_native) {

$contents = 'ERROR: invalid mode';

$status = array( 'http_code' => 'ERROR' );

}

// Propagate headers to response.

/* foreach ( $header_text as $header ) {

header( $header );

}

*/

return $contents;

} else {

// $data will be serialized into JSON data.

$data = array();

// Propagate all HTTP headers into the JSON data object.

if (self::$CURL_full_headers) {

$data['headers'] = array();

foreach ( $header_text as $header ) {

preg_match( '/^(.+?):\s+(.*)$/', $header, $matches );

if ( $matches ) {

$data['headers'][ $matches[1] ] = $matches[2];

}

}

}

// Propagate all cURL request / response info to the JSON data object.

if ( self::$CURL_full_status) {

$data['status'] = $status;

} else {

$data['status'] = array();

$data['status']['http_code'] = $status['http_code'];

}

// Set the JSON data object contents, decoding it from JSON if possible.

$decoded_json = json_decode( $contents );

$data['contents'] = $decoded_json ? $decoded_json : $contents;

// Generate appropriate content-type header.

$is_xhr = strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';

header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) );

// Get JSONP callback.

$jsonp_callback = self::$CURL_enable_jsonp && isset(self::$CURL_CallBack) ? self::$CURL_CallBack : null;

// Generate JSON/JSONP string

$json = json_encode( $data );

return $jsonp_callback ? "$jsonp_callback($json)" : $json;

}

}

private static function Post_FILE_GET_CONTENTS($url, $post = null)

{

$context = array();

if (is_array($post)) {

ksort($post);

$context['http'] = array (

'timeout'=>10,

'method' => 'POST',

'header' => 'Content-type: application/x-www-form-urlencoded',

'content' => http_build_query($post, '', '&'),

);

}

self::$response=file_get_contents($url, false, stream_context_create($context));

return self::$response;

}

}

?>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值