久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

PHP xml-rpc遠程調用

瀏覽:81日期:2024-01-11 08:30:35

從網上找來的XML-RPC庫,對于開發小型的外部通訊接口很有用,把這個代碼保存為xml-rpc.inc.php

<?php/*從網上找來的XML-RPC庫,對于開發小型的外部通訊接口很有用*/function & XML_serialize($data, $level = 0, $prior_key = NULL){#assumes a hash, keys are the variable names$xml_serialized_string = '';while(list($key, $value) = each($data)){$inline = false;$numeric_array = false;$attributes = '';#echo 'My current key is '$key', called with prior key '$prior_key'<br>';if(!strstr($key, ' attr')){ #if it's not an attributeif(array_key_exists('$key attr', $data)){while(list($attr_name, $attr_value) = each($data['$key attr'])){#echo 'Found attribute $attribute_name with value $attribute_value<br>';$attr_value = &htmlspecialchars($attr_value, ENT_QUOTES);$attributes .= ' $attr_name='$attr_value'';}}if(is_numeric($key)){#echo 'My current key ($key) is numeric. My parent key is '$prior_key'<br>';$key = $prior_key;}else{#you can't have numeric keys at two levels in a row, so this is ok#echo 'Checking to see if a numeric key exists in data.';if(is_array($value) and array_key_exists(0, $value)){# echo ' It does! Calling myself as a result of a numeric array.<br>';$numeric_array = true;$xml_serialized_string .= XML_serialize($value, $level, $key);}#echo '<br>';}if(!$numeric_array){$xml_serialized_string .= str_repeat('t', $level) . '<$key$attributes>';if(is_array($value)){$xml_serialized_string .= 'rn' . XML_serialize($value, $level+1);}else{$inline = true;$xml_serialized_string .= htmlspecialchars($value);}$xml_serialized_string .= (!$inline ? str_repeat('t', $level) : '') . '</$key>rn';}}else{#echo 'Skipping attribute record for key $key<bR>';}}if($level == 0){$xml_serialized_string = '<?xml version='1.0' ?>rn' . $xml_serialized_string;return $xml_serialized_string;}else{return $xml_serialized_string;}}class XML {var $parser; #a reference to the XML parservar $document; #the entire XML structure built up so farvar $current; #a pointer to the current item - what is thisvar $parent; #a pointer to the current parent - the parent will be an arrayvar $parents; #an array of the most recent parent at each levelvar $last_opened_tag;function XML($data=null){$this->parser = xml_parser_create();xml_parser_set_option ($this->parser, XML_OPTION_CASE_FOLDING, 0);xml_set_object($this->parser, $this);xml_set_element_handler($this->parser, 'open', 'close');xml_set_character_data_handler($this->parser, 'data');# register_shutdown_function(array($this, 'destruct'));}function destruct(){xml_parser_free($this->parser);}function parse($data){$this->document = array();$this->parent = $this->document;$this->parents = array();$this->last_opened_tag = NULL;xml_parse($this->parser, $data);return $this->document;}function open($parser, $tag, $attributes){#echo 'Opening tag $tag<br>n';$this->data = '';$this->last_opened_tag = $tag; #tag is a stringif(array_key_exists($tag, $this->parent)){#echo 'There's already an instance of '$tag' at the current level ($level)<br>n';if(is_array($this->parent[$tag]) and array_key_exists(0, $this->parent[$tag])){ #if the keys are numeric#need to make sure they're numeric (account for attributes)$key = count_numeric_items($this->parent[$tag]);#echo 'There are $key instances: the keys are numeric.<br>n';}else{#echo 'There is only one instance. Shifting everything around<br>n';$temp = $this->parent[$tag];unset($this->parent[$tag]);$this->parent[$tag][0] = $temp;if(array_key_exists('$tag attr', $this->parent)){#shift the attributes around too if they exist$temp = $this->parent['$tag attr'];unset($this->parent['$tag attr']);$this->parent[$tag]['0 attr'] = $temp;}$key = 1;}$this->parent = $this->parent[$tag];}else{$key = $tag;}if($attributes){$this->parent['$key attr'] = $attributes;}$this->parent[$key] = array();$this->parent = $this->parent[$key];array_unshift($this->parents, $this->parent);}function data($parser, $data){#echo 'Data is '', htmlspecialchars($data), ''<br>n';if($this->last_opened_tag != NULL){$this->data .= $data;}}function close($parser, $tag){#echo 'Close tag $tag<br>n';if($this->last_opened_tag == $tag){$this->parent = $this->data;$this->last_opened_tag = NULL;}array_shift($this->parents);$this->parent = $this->parents[0];}}function & XML_unserialize($xml){$xml_parser = new XML();$data = $xml_parser->parse($xml);$xml_parser->destruct();return $data;}function & XMLRPC_parse($request){if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_parse', '<p>Received the following raw request:</p>' . XMLRPC_show($request, 'print_r', true));}$data = &XML_unserialize($request);if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_parse', '<p>Returning the following parsed request:</p>' . XMLRPC_show($data, 'print_r', true));}return $data;}function & XMLRPC_prepare($data, $type = NULL){if(is_array($data)){$num_elements = count($data);if((array_key_exists(0, $data) or !$num_elements) and $type != 'struct'){ #it's an arrayif(!$num_elements){ #if the array is emptyempty$returnvalue = array('array' => array('data' => NULL));}else{$returnvalue['array']['data']['value'] = array();$temp = $returnvalue['array']['data']['value'];$count = count_numeric_items($data);for($n=0; $n<$count; $n++){$type = NULL;if(array_key_exists('$n type', $data)){$type = $data['$n type'];}$temp[$n] = XMLRPC_prepare($data[$n], $type);}}}else{ #it's a structif(!$num_elements){ #if the struct is emptyempty$returnvalue = array('struct' => NULL);}else{$returnvalue['struct']['member'] = array();$temp = $returnvalue['struct']['member'];while(list($key, $value) = each($data)){if(substr($key, -5) != ' type'){ #if it's not a type specifier$type = NULL;if(array_key_exists('$key type', $data)){$type = $data['$key type'];}$temp[] = array('name' => $key, 'value' => XMLRPC_prepare($value, $type));}}}}}else{ #it's a scalarif(!$type){if(is_int($data)){$returnvalue['int'] = $data;return $returnvalue;}elseif(is_float($data)){$returnvalue['double'] = $data;return $returnvalue;}elseif(is_bool($data)){$returnvalue['boolean'] = ($data ? 1 : 0);return $returnvalue;}elseif(preg_match('/^d{8}Td{2}:d{2}:d{2}$/', $data, $matches)){ #it's a date$returnvalue['dateTime.iso8601'] = $data;return $returnvalue;}elseif(is_string($data)){$returnvalue['string'] = htmlspecialchars($data);return $returnvalue;}}else{$returnvalue[$type] = htmlspecialchars($data);}}return $returnvalue;}function & XMLRPC_adjustValue($current_node){if(is_array($current_node)){if(isset($current_node['array'])){if(!is_array($current_node['array']['data'])){#If there are no elements, return an emptyempty arrayreturn array();}else{#echo 'Getting rid of array -> data -> value<br>n';$temp = $current_node['array']['data']['value'];if(is_array($temp) and array_key_exists(0, $temp)){$count = count($temp);for($n=0;$n<$count;$n++){$temp2[$n] = &XMLRPC_adjustValue($temp[$n]);}$temp = $temp2;}else{$temp2 = &XMLRPC_adjustValue($temp);$temp = array($temp2);#I do the temp assignment because it avoids copying,# since I can put a reference in the array#PHP's reference model is a bit silly, and I can't just say:# $temp = array(&XMLRPC_adjustValue($temp));}}}elseif(isset($current_node['struct'])){if(!is_array($current_node['struct'])){#If there are no members, return an emptyempty arrayreturn array();}else{#echo 'Getting rid of struct -> member<br>n';$temp = $current_node['struct']['member'];if(is_array($temp) and array_key_exists(0, $temp)){$count = count($temp);for($n=0;$n<$count;$n++){#echo 'Passing name {$temp[$n][name]}. Value is: ' . show($temp[$n][value], var_dump, true) . '<br>n';$temp2[$temp[$n]['name']] = &XMLRPC_adjustValue($temp[$n]['value']);#echo 'adjustValue(): After assigning, the value is ' . show($temp2[$temp[$n]['name']], var_dump, true) . '<br>n';}}else{#echo 'Passing name $temp[name]<br>n';$temp2[$temp['name']] = &XMLRPC_adjustValue($temp['value']);}$temp = $temp2;}}else{$types = array('string', 'int', 'i4', 'double', 'dateTime.iso8601', 'base64', 'boolean');$fell_through = true;foreach($types as $type){if(array_key_exists($type, $current_node)){#echo 'Getting rid of '$type'<br>n';$temp = $current_node[$type];#echo 'adjustValue(): The current node is set with a type of $type<br>n';$fell_through = false;break;}}if($fell_through){$type = 'string';#echo 'Fell through! Type is $type<br>n';}switch ($type){case 'int': case 'i4': $temp = (int)$temp; break;case 'string': $temp = (string)$temp; break;case 'double': $temp = (double)$temp; break;case 'boolean': $temp = (bool)$temp; break;}}}else{$temp = (string)$current_node;}return $temp;}function XMLRPC_getParams($request){if(!is_array($request['methodCall']['params'])){#If there are no parameters, return an emptyempty arrayreturn array();}else{#echo 'Getting rid of methodCall -> params -> param<br>n';$temp = $request['methodCall']['params']['param'];if(is_array($temp) and array_key_exists(0, $temp)){$count = count($temp);for($n = 0; $n < $count; $n++){#echo 'Serializing parameter $n<br>';$temp2[$n] = &XMLRPC_adjustValue($temp[$n]['value']);}}else{$temp2[0] = &XMLRPC_adjustValue($temp['value']);}$temp = $temp2;return $temp;}}function XMLRPC_getMethodName($methodCall){#returns the method namereturn $methodCall['methodCall']['methodName'];}function XMLRPC_request($site, $location, $methodName, $params = NULL, $user_agent = NULL){$site = explode(':', $site);if(isset($site[1]) and is_numeric($site[1])){$port = $site[1];}else{$port = 80;}$site = $site[0];$data['methodCall']['methodName'] = $methodName;$param_count = count($params);if(!$param_count){$data['methodCall']['params'] = NULL;}else{for($n = 0; $n<$param_count; $n++){$data['methodCall']['params']['param'][$n]['value'] = $params[$n];}}$data = XML_serialize($data);if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_request', '<p>Received the following parameter list to send:</p>' . XMLRPC_show($params, 'print_r', true));}$conn = fsockopen ($site, $port); #open the connectionif(!$conn){ #if the connection was not opened successfullyif(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_request', '<p>Connection failed: Couldn't make the connection to $site.</p>');}return array(false, array('faultCode'=>10532, 'faultString'=>'Connection failed: Couldn't make the connection to $site.'));}else{$headers ='POST $location HTTP/1.0rn' .'Host: $sitern' .'Connection: closern' .($user_agent ? 'User-Agent: $user_agentrn' : '') .'Content-Type: text/xmlrn' .'Content-Length: ' . strlen($data) . 'rnrn';fputs($conn, '$headers');fputs($conn, $data);if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_request', '<p>Sent the following request:</p>nn' . XMLRPC_show($headers . $data, 'print_r', true));}#socket_set_blocking ($conn, false);$response = '';while(!feof($conn)){$response .= fgets($conn, 1024);}fclose($conn);#strip headers off of response$data = XML_unserialize(substr($response, strpos($response, 'rnrn')+4));if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_request', '<p>Received the following response:</p>nn' . XMLRPC_show($response, 'print_r', true) . '<p>Which was serialized into the following data:</p>nn' . XMLRPC_show($data, 'print_r', true));}if(isset($data['methodResponse']['fault'])){$return = array(false, XMLRPC_adjustValue($data['methodResponse']['fault']['value']));if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_request', '<p>Returning:</p>nn' . XMLRPC_show($return, 'var_dump', true));}return $return;}else{$return = array(true, XMLRPC_adjustValue($data['methodResponse']['params']['param']['value']));if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_request', '<p>Returning:</p>nn' . XMLRPC_show($return, 'var_dump', true));}return $return;}}}function XMLRPC_response($return_value, $server = NULL){$data['methodResponse']['params']['param']['value'] = $return_value;$return = XML_serialize($data);if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_response', '<p>Received the following data to return:</p>nn' . XMLRPC_show($return_value, 'print_r', true));}header('Connection: close');header('Content-Length: ' . strlen($return));header('Content-Type: text/xml');header('Date: ' . date('r'));if($server){header('Server: $server');}if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_response', '<p>Sent the following response:</p>nn' . XMLRPC_show($return, 'print_r', true));}echo $return;}function XMLRPC_error($faultCode, $faultString, $server = NULL){$array['methodResponse']['fault']['value']['struct']['member'] = array();$temp = $array['methodResponse']['fault']['value']['struct']['member'];$temp[0]['name'] = 'faultCode';$temp[0]['value']['int'] = $faultCode;$temp[1]['name'] = 'faultString';$temp[1]['value']['string'] = $faultString;$return = XML_serialize($array);header('Connection: close');header('Content-Length: ' . strlen($return));header('Content-Type: text/xml');header('Date: ' . date('r'));if($server){header('Server: $server');}if(defined('XMLRPC_DEBUG') and XMLRPC_DEBUG){XMLRPC_debug('XMLRPC_error', '<p>Sent the following error response:</p>nn' . XMLRPC_show($return, 'print_r', true));}echo $return;}function XMLRPC_convert_timestamp_to_iso8601($timestamp){#takes a unix timestamp and converts it to iso8601 required by XMLRPC#an example iso8601 datetime is '20010822T03:14:33'return date('YmdTH:i:s', $timestamp);}function XMLRPC_convert_iso8601_to_timestamp($iso8601){return strtotime($iso8601);}function count_numeric_items($array){return is_array($array) ? count(array_filter(array_keys($array), 'is_numeric')) : 0;}function XMLRPC_debug($function_name, $debug_message){$GLOBALS['XMLRPC_DEBUG_INFO'][] = array($function_name, $debug_message);}function XMLRPC_debug_print(){if($GLOBALS['XMLRPC_DEBUG_INFO']){echo '<table border='1' width='100%'>n';foreach($GLOBALS['XMLRPC_DEBUG_INFO'] as $debug){echo '<tr><th style='vertical-align: top'>$debug[0]</th><td>$debug[1]</td></tr>n';}echo '</table>n';unset($GLOBALS['XMLRPC_DEBUG_INFO']);}else{echo '<p>No debugging information available yet.</p>';}}function XMLRPC_show($data, $func = 'print_r', $return_str = false){ob_start();$func($data);$output = ob_get_contents();ob_end_clean();if($return_str){return '<pre>' . htmlspecialchars($output) . '</pre>n';}else{echo '<pre>', htmlspecialchars($output), '</pre>n';}}?>

服務端程序例子,server.php

<?include 'xml-rpc.inc.php';//定義可被遠程調用的方法$xmlrpc_methods=array();$xmlrpc_methods['insertRecords']='insertRecords';//獲得用戶傳入的方法名和參數$xmlrpc_request = XMLRPC_parse($HTTP_RAW_POST_DATA);$methodName = XMLRPC_getMethodName($xmlrpc_request);$params = XMLRPC_getParams($xmlrpc_request);if (!isset($xmlrpc_methods[$methodName])){XMLRPC_error('1','你所調用的方法不存在');}else {$xmlrpc_methods[$methodName]($params);}function insertRecords($params){if (emptyempty($params)){XMLRPC_error('2','參數出錯');}XMLRPC_response(XMLRPC_prepare('http://www.emtit.com'));}?>

PHP客戶端調用服務端方法例子

<?phpinclude_once 'xml-rpc.inc';$params=array(2,3);$result=XMLRPC_request('127.0.0.1','/services/server.php','insertRecords',$params);//服務端文件放在services文件夾下print_r($result);?>

標簽: PHP
主站蜘蛛池模板: 国产精品91av | 成人黄色一区 | 中文字幕精品一区二区三区精品 | 毛片激情永久免费 | 国产一区精品视频 | 欧美一区久久 | 欧美一级网站 | 精品无码三级在线观看视频 | www.9191| 久久精品国产一区 | 天天干天天插 | 亚洲第一性理论片 | 99久久婷婷国产综合精品电影 | 亚洲精品一区二区三区四区高清 | 一区二区三区 在线 | 国产精品视频久久 | 久久作爱视频 | 欧美成年黄网站色视频 | 一区二区三区四区在线播放 | 国产欧美精品区一区二区三区 | 亚洲综合视频一区 | 一区二区三区四区在线播放 | av日韩在线看 | 五月天电影网 | 在线色网站 | 天天艹久久 | 日日干夜夜操 | 欧美日韩精品亚洲 | 麻豆av在线播放 | 999精品在线 | 99热婷婷| 亚洲第一av| 国产欧美综合在线 | 欧美日韩福利视频 | 91在线看 | 亚洲另类视频 | 国产三级精品三级 | 91久久久久久久久久久久久久久久 | 国产欧美在线一区二区 | 免费福利网站 | 大胸av| 9999久久久久| 伊人超碰| 国产高清精品一区二区三区 | 成人 在线 | 国产欧美精品一区二区三区四区 | 国产专区在线视频 | 山外人精品| 一区二区中文字幕在线观看 | 不卡一区 | 精品欧美一区二区三区 | 欧美视频一区二区 | 国产一区二区三区欧美 | zzz444成人天堂7777 | 黄色日批视频 | 日韩超级大片免费看国产国产播放器 | 欧美久久久久久久久久久久久久 | 91精品久久久久久久久久 | 午夜免费视频 | 亚洲国产一区在线 | 欧美精品成人一区二区三区四区 | 国内精品视频一区 | 久草视频在线播放 | 亚洲免费在线视频 | 一级a性色生活片久久毛片明星 | 成人免费一区二区三区视频网站 | 久久综合九色综合欧美狠狠 | 三区中文字幕 | 国产高清在线精品一区二区三区 | 超碰在线91| 一级在线观看 | 一二三区av | 国产精品日产欧美久久久久 | 国产韩国精品一区二区三区 | 国产中文一区 | 无毒黄网 | 日本免费在线视频 | 91在线精品秘密一区二区 | 日韩视频精品在线 | 久久久久久国产 | 国产一区91| 欧美日韩午夜精品 | 精品久久久免费视频 | 免费一级片 | 影音先锋在线看片资源 | 亚洲一区日韩 | 99pao成人国产永久免费视频 | 美女毛片 | 国产一区二区三区免费播放 | 99re热精品视频国产免费 | 久久久久在线 | 久久一区 | 伊人网在线视频观看 | 狠狠躁夜夜躁人人爽天天高潮 | 久久99精品久久久 | 精品国产乱码久久久久久久软件 | 91亚洲精品乱码久久久久久蜜桃 | 国产精品亚洲欧美日韩一区在线 | 成人免费视频网站在线看 | 日韩av在线中文字幕 | 久久亚洲一区二区 | 国产精品亚洲a | 午夜免费剧场 | 国产在线日韩 | 国产一二在线 | 国产h片在线观看 | 国产欧美精品一区二区三区 | 国产在线中文字幕 | 日韩视频在线免费观看 | 一区二区三区免费网站 | 91麻豆精品国产91久久久资源速度 | www一区二区 | 成人免费一区二区三区视频网站 | 亚洲一区视频在线播放 | 最新黄色网址在线播放 | 日本黄色一级片免费看 | 99福利视频| 国产一区二区三区四区在线观看 | 精品人伦一区二区三区蜜桃视频 | 91免费视频| 9色网站 | 精品国产一区二区三区在线观看 | 欧美日韩精品一区二区三区在线观看 | 杏导航aⅴ福利网站 | 黄网址在线观看 | 黄色一级免费电影 | 欧美video | 欧美一级二级视频 | 日韩亚洲精品在线观看 | 在线观看免费av网站 | 另类sb东北妇女av | 九九在线国产视频 | 成人在线欧美 | 欧美在线综合 | 国产成人61精品免费看片 | 国产精品美女久久久 | 人妖 丝袜 另类 亚洲 | 视频在线一区二区 | 久久99精品久久久久国产越南 | 成人黄色在线视频 | 在线观看a视频 | 成人福利在线 | 国产在线专区 | 国产精品久久嫩一区二区免费 | 超级碰在线 | 亚洲艹 | 国产成人福利在线观看 | 免费av在线 | 高清视频一区 | 欧美精品二区中文乱码字幕高清 | 日韩精品一区二 | 欧美午夜三级视频 | 奇米影视7777 | 海外中文字幕在线观看 | 亚洲精品视频在线观看免费 | 黄色片地址 | 国产精品欧美一区二区三区 | 久久精品一 | 久久视频一区二区 | 免费午夜视频 | 在线观看黄免费 | 日韩爱爱免费视频 | 欧美中文字幕 | 性视频网站免费 | 国产精品美女久久久久久久久久久 | 中文字幕一区在线观看 | 精品成人免费一区二区在线播放 | 国产精品美女久久久久久免费 | 日韩精品视频在线 | 欧美日韩精品一区二区三区在线观看 | 成人午夜在线观看 | 亚洲一区二区在线 | 欧美福利在线 | 精品国产一区二区三区性色av | 久久精品极品 | 亚洲午夜精品片久久www慈禧 | 漂亮少妇videoshd忠贞 | av在线播放免费 | 国产精品美女久久久久久久网站 | av在线免费网址 | 簧片免费网站 | 理伦影院 | 欧美午夜一区二区三区免费大片 | 日韩视频一区在线观看 | а天堂中文最新一区二区三区 | 久久精品国产亚洲一区二区三区 | 日韩大尺度在线观看 | 成人网址在线观看 | 成人在线免费 | 香蕉av777xxx色综合一区 | 啪啪网站免费 | www日批 | 亚洲国产一区二区三区四区 | 日本激情网 | 999国产在线视频 | 午夜久久av | 看a网址| 最新高清无码专区 | 久久久久一区 | 91天堂 | 日韩精品一区二区三区在线 | 欧美一区永久视频免费观看 | 亚洲视频在线一区 | www.啪啪| 国产精品91av | 婷婷国产精品 | av观看| 国产99久| 91麻豆精品国产91久久久久 | 日韩毛片一级 | 人妖一区 | 国产精品美女久久久久久久久久久 | 91中文字幕| 亚洲伊人中文字幕 | 国产精品久久国产愉拍 | 免费的色网站 | 一区二区三区免费网站 | 91精品久久久久久久 | 日韩av免费在线观看 | 欧美久久一区二区三区 | 91久久夜色精品国产网站 | 夜夜骑首页 | 91中文字幕在线 | 91精品久久久久久9s密挑 | 精品亚洲精品 | 午夜影院免费 | 爱干视频 | 自拍偷拍小视频 | 亚洲女人天堂av | 偷偷干夜夜拍 | 日韩不卡一区二区 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产成人高清精品免费5388 | 亚洲人人舔人人 | 91免费在线视频 | 日本视频黄 | 欧美精品99| www.se天堂| 国产精品一区二区在线观看 | 中文一区 | 欧美第一视频 | 成人在线观看一区 | av一区二区三区 | 中文字幕在线视频观看 | 在线只有精品 | 日韩精品一区二区三区在线观看 | 成人欧美一区二区三区在线播放 | 在线看成人片 | 天堂久久一区 | 成人午夜性a一级毛片免费看 | 国产男女做爰免费网站 | 久久精品一 | 国产福利一区二区 | 色欧美片视频在线观看 | 日韩综合在线 | 日韩电影一区二区在线观看 | 国产精品高潮呻吟 | 在线观看中文字幕 | 欧美性猛交一区二区三区精品 | 最近中文字幕在线视频1 | av入口 | 欧美一级毛片久久99精品蜜桃 | 国产91成人video | www.久久.com | 日韩精品1区 | 日本电影www | 国产精品日韩精品 | 亚洲国产精品久久久久秋霞不卡 | 国产精品久久视频 | 国产高清在线观看 | 日韩一区在线视频 | 欧美一级片在线观看 | 免费xxxxx在线观看网站软件 | 色网站视频 | 国产精品久久久久久久久久ktv | 无套内谢孕妇毛片免费看红桃影视 | 最近韩国日本免费观看mv免费版 | 成人午夜精品久久久久久久3d | 国产成人久久精品一区二区三区 | 日韩一区在线视频 | 国产激情精品一区二区三区 | 在线成人国产 | 亚洲精品视频在线 | 国产一级免费在线观看 | 麻豆专区一区二区三区四区五区 | 中文字幕一区在线 | 天天插天天操 | 欧美一区二区三区视频 | 欧美激情一区二区三区 | 欧美日韩亚洲国产综合 | av手机在线播放 | 欧美精品导航 | 美女黄视频网站 | 欧美国产日韩在线 | 久精品在线 | 国产精品久久久久久久久久99 | 一级黄色片视频 | 精品99在线 | 国产精品福利午夜在线观看 | 久久狠狠 | 超碰香蕉| 亚洲三区在线观看 | 成人免费影院 | 中国大陆高清aⅴ毛片 | 精品视频在线观看一区二区三区 | 在线欧美日韩 | 亚洲国产精品自拍 | 狠狠操天天操 | 二区在线观看 | 色综合天天 | 日日噜 | 久久国产一区二区 | 日韩在线视频观看 | 欧美视频在线免费 | 国产福利在线观看视频 | 亚洲精彩视频在线 | 成人高清视频在线观看 | 国产精品高清在线 | 日本不卡一区二区 | 黄色片免费 | 亚洲成人一区 | 99国内精品久久久久久久 | 一区二区三区影视 | 成人久久18免费 | 成人妇女免费播放久久久 | 日韩色av | 欧美久久一级特黄毛片 | 国产精品久久久久国产a级 日韩在线二区 | 国产综合精品一区二区三区 | 玖玖精品在线 | 伊人网站 | 日韩精品一区在线 | 日韩成人在线观看 | 免费视频爱爱太爽了 | 国产视频9999 | 久久久久久亚洲 | 国产一区精品视频 | 中文字幕66页 | 日本中文字幕在线播放 | aaaaaaa片毛片免费观看 | 成年人视频在线观看免费 | 高清国产午夜精品久久久久久 | 91精品国产综合久久福利 | 91精品国产91久久久久久久久久久久 | 伊人av成人 | 成人精品三级av在线看 | 亚洲成人久久久 | 国产一区二区视频在线 | 国产精品久久久久久久久久久小说 | 久久天堂av综合合色蜜桃网 | 一区二区精品在线 | 羞羞视频在线观免费观看 | 天天躁日日躁狠狠躁av麻豆 | 91社区在线高清 | 国产欧美综合一区二区三区 | 欧美不卡一区二区三区 | 欧美日韩精品 | 国产精品美女久久久久aⅴ国产馆 | 亚洲欧美日韩另类精品一区二区三区 | 国产精品久久久久久久久久久新郎 | 在线一级电影 | 亚洲一区二区在线看 | 欧美精品1区2区 | 色婷婷国产精品久久包臀 | 精品欧美一区二区在线观看视频 | 久久综合久久综合久久 | 91夜夜蜜桃臀一区二区三区 | 91亚洲在线 | 欧美精品一区二区三区一线天视频 | 黄色成人影视 | 亚欧洲精品视频在线观看 | 欧洲毛片 | 精品国产鲁一鲁一区二区在线观看 | 亚洲精品一区二区三区蜜桃久 | 亚洲综合大片69999 | a级性生活片 | 国产a久久精品一区二区三区 | 国产视频中文字幕 | 另类国产ts人妖高潮系列视频 | 黄网址在线观看 | 国产免费一区二区 | 91视频在线网址 | 一区二区影院 | 成人欧美一区二区三区在线播放 | 天天夜夜操 | 国产精品久久久久精 | av大片网| 欧美黄视频在线观看 | 一区二区在线视频免费观看 | 天天狠狠操 | 午夜影院普通用户体验区 | 中文二区 | 91免费版在线观看 | 91久久精品久久国产性色也91 | 亚洲免费在线观看 | 91精品国产综合久久久久久 | 日韩在线中文字幕 | 中文字幕日韩av | 中文字幕亚洲视频 | 国产成人精品久久二区二区 | 99国内精品久久久久久久 | 国产真实乱全部视频 | 黄网站涩免费蜜桃网站 | 日韩中文字幕一区二区高清99 | 亚洲视频一区在线播放 | 成人欧美一区二区三区在线播放 | 欧日韩免费视频 | 国内精品国产成人国产三级粉色 | 伊人网影院 | 欧美激情视频一区二区三区在线播放 | 欧美一级片毛片免费观看视频 | 欧美三级在线 | 亚洲精品一区二区三区樱花 | 久久久久久国产精品mv | 综合久久国产九一剧情麻豆 | 精品2区| 91精品国产色综合久久 | 亚洲国产婷婷 | 免费av播放 | 免费成人av | 免费看男女www网站入口在线 | 成人一级片 | 一级久久久久 | 日韩在线免费 | 亚洲精品91 | 精品久久精品 | 操视频网站 | 中文字幕一区二区在线观看 | 女男羞羞视频网站免费 | 丁香久久 | 亚洲精品在线成人 | 免费h | 在线精品一区 | 精品亚洲一区二区 | 国产成人精品一区二区三区网站观看 | 成人a在线视频免费观看 | 精品国产三级a在线观看 | 一级女性全黄久久生活片免费 | 国产精品国产a级 | 夜夜草视频 | 色视频www在线播放国产人成 | 日比视频网站 | 成人在线视频免费观看 | 久久久久久久久国产 | 国产精品久久久久久亚洲调教 | 欧美日韩精品一区二区在线播放 | 亚洲午夜在线 | 青青草一区 | 亚洲精品a在线观看 | 国产在线免费 | 中文字幕一二三 | 一级久久久| 一区二区视频 | av综合在线观看 | 国产精品久久久久久久久 | 欧美日韩视频在线第一区 | 精品久久久久久一区二区 | 日韩在线电影 | 极品白嫩少妇无套内谢 | 国产成人精品免高潮在线观看 | 精品久久网 | 一区二区三区国产 | 欧美黄色片 | 日韩成人在线观看 | 在线只有精品 | 一区视频在线 | 国产香蕉97碰碰久久人人九色 | 精品一区二区在线播放 | 精品无人乱码一区二区三区 | 亚洲精品在线成人 | 久久综合色视频 | 久久久国产精品x99av | 波多野结衣一二三 | 一区欧美| 亚洲国产成人久久一区二区三区 | 国产欧美精品区一区二区三区 | 91精品在线看 | 成人欧美一区二区三区黑人孕妇 | 99久久精品一区二区 | 欧美日在线 | 精品二三区 | 视频一区在线播放 | 精品美女| 国产亚洲欧美一区 | 这里只有精品在线 | 99视频在线免费观看 | 91国在线高清视频 | 国产精品2区 | 成人特区| 天堂欧美城网站网址 | 色av综合网 | 91精品国产色综合久久 | 国产欧美在线播放 | 成人在线观看免费 | 久久综合电影 | 亚洲人成人一区二区在线观看 | 欧美久久视频 | 蜜桃精品久久久久久久免费影院 | 欧美日韩在线免费观看 | 黄免费观看| 久久精品亚洲精品 | 国产精品久久久久久一区二区三区 | 色视频网站免费看 | 开操网 | 亚洲国产精品一区二区久久,亚洲午夜 | 激情五月综合 | 亚洲精品综合 | 毛片a在线 | 91久色| 亚洲国产精品人人爽夜夜爽 | 亚洲一区二区三区福利 | 国产一区二区三区四区在线观看 | 特黄级国产片 | 国产精品久久久久久久久久 | 久久国| 国产精品久久久久影院色老大 | 亚洲欧洲精品成人久久奇米网 | 欧美日韩久久精品 | 国产伦精品久久久一区二区三区 | 中国特级黄色片 | 9久久婷婷国产综合精品性色 | www.国产精 | 91在线免费观看 | 日韩一级 | 午夜影院网站 | 色综合天天 | 久草精品在线 | 夜夜夜操操操 | 国产a免费 | 中文字幕视频在线免费观看 | 欧美成人综合 | 青青久久久 | 国产亚洲精品成人av久久ww | 中文字幕1区| 91成人在线免费视频 | 国产欧美高清在线观看 | 一区二区三区四区精品 | 国产三级久久久久 | 亚洲一二三 | 久久一区视频 | 日韩一区二区三区在线观看 | 在线观看黄免费 | 精品九九| 日韩欧美一区二区在线观看 | 婷婷综合 | 国产日韩精品在线观看 | 国产亚洲欧美在线 | 毛片久久 | 成人av网站免费观看 | 久久久久久成人精品 | 国产精品二区三区 | 天堂av一区二区 | 日本三级做a全过程在线观看 | 精品久久国产老人久久综合 | 欧美成人精品激情在线观看 | 中文字幕第一页在线 | 久久久久久久久久久免费视频 | 国产一区二区视频在线观看 | 天堂中文网 | 特级淫片女子高清视频在线观看 | 在线成人av | 一区二区色 | 亚洲天堂av网 | 国产黄色大片 | 国产精品视频免费观看 | 国产成人网 | 天天操天天拍 | 国产精品久久久久久久久久 | 高清免费av| 午夜精品久久久久久99热软件 | 荷兰欧美一级毛片 | 日韩成人在线播放 | 国产美女网站 | 久久久久亚洲精品 | 国产欧美中文字幕 | 精产国产伦理一二三区 | 天堂中文资源在线 | 久久爱综合 | 黄色片在线免费看 | 亚洲人成人一区二区在线观看 | 国产日韩精品一区 | 91一区二区在线观看 | 亚洲国产精品麻豆 | 韩日一区 | 日韩一区精品 | 山岸逢花在线观看 | 色偷偷噜噜噜亚洲男人 | 日韩欧美在线一区二区 | 成人网址在线观看 | 欧美日韩精品久久久 | 91视频在线 | 亚洲成人高清在线 | 国产一区二区三区在线视频 | 久久成人免费观看 | 久久免费视频观看 | 在线播放91 | 国产精品欧美一区二区三区不卡 | 国产成人99 | 91视频网 | 夜夜艹 | 国产欧美一区二区三区国产幕精品 | 最新av网址大全 | 一级黄色片a级 | 99精品欧美一区二区三区综合在线 | 91久久国产综合久久91精品网站 | 欧美激情一区二区三区四区 | 欧美日韩中文 | 久久久一 | 国产精品久久久久久久久免费软件 | 午夜在线小视频 | 久久久久国产一区二区三区四区 | 一区二区三区在线 | 免费在线观看av | 最新国产视频 | 欧美xxxx做受欧美 |