ehi*_*ime 5 php xml post curl get
因此要点是,我需要将XML数据查询发布到网关页面以接收XML响应,稍后再进行解析,该Web服务可以有3-60个查询,现在我不得不运行一个简单的循环并一次做一个。在响应方面,我只需要响应中的1行(或最多5行),第2行是我需要包含图像数据的第一行。因此,我希望能够选择所有可能读取的行。
正如我在基本的for循环中所说的那样,我创建了一个简单的“读入”函数,这是我当前正在使用并且想要修改的代码。
$ part1 ='XML开头'; $ part2 = XML End'; $ posts = array(0 =>'SC-010052214',1 =>'SC-000032972',2 =>'SC-012535460',3 =>'SC-011257289',4 =>'SC-010134078') ; $ ch = curl_init(); curl_setopt($ ch,CURLOPT_URL,'http://example.com/index.php'); curl_setopt($ ch,CURLOPT_RETURNTRANSFER => 1); curl_setopt($ ch,CURLOPT_POST,1); $ count = count($ posts); for($ i = 0; $ i <$ count; $ i ++){ curl_setopt($ ch,CURLOPT_POSTFIELDS,“有效载荷= $ part1 {$ posts [$ i]} $ part2”); $ return [] = curl_exec($ ch); } curl_close($ ch); print_r($ return);
限制:不幸的是,我不能使用?post = $ data0&post = $ data1&post = $ data3,因此我需要一个更好的解决方案。除此之外,我想看看这里可以进行哪些改进。
由于反应速度有限,
<?php 函数 m_curl($input) { // 编译可用位置的查询 foreach($input['content'] as $pos=>$item) { $query = '<childDetailQuery><请求><查询替换>'; $query .= "<item_number>{$item}</item_number>"; $query .= (isset($input['story']) && $input['story'] != NULL) ?"<story_type>".$input['story']."</story_type>" : '<story_type>简短</story_type>'; $query .= (isset($input['party']) && $input['party'] != NULL) ?"<party_number>".$input['party']."</party_number>" : ''; $query .= "</query-replacement><latency-tolerance>NONE</latency-tolerance>"; $query .= '</request></childDetailQuery>'; $查询[] = $查询; 取消设置($查询); } // 确保滚动窗口不大于 url 数量 $限制= 10; $limit = (sizeof($queries) < $limit) ? sizeof($queries) : $limit; $master =curl_multi_init(); $curl_arr = 数组(); // 在这里添加额外的卷曲选项 $std_options = 数组( CURLOPT_RETURNTRANSFER => 1, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_MAXREDIRS => 0, ); $选项=($选项)?($std_options + $coptions) : $std_options; 回显$输入['位置']; // 开始第一批请求 for ($i = 0; $i < $limit; $i++) { $ch=curl_init(); $options[CURLOPT_POSTFIELDS] = "payload=".$queries[$i]; curl_setopt_array($ch,$options); curl_multi_add_handle($master, $ch); } 做 { while(($execrun =curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM); if($execrun != CURLM_OK) { echo '卷曲错误'; 休息; } // 一个请求刚刚完成——找出是哪一个 while($done =curl_multi_info_read($master)) { $info =curl_getinfo($done['handle']); if ($info['http_code'] == 200) { $output=curl_multi_getcontent($done['handle']); // 请求成功。使用回调函数处理输出。 parse_returns($输出); // 启动一个新请求(在删除旧请求之前执行此操作很重要) $ch=curl_init(); $options[CURLOPT_POSTFIELDS] = "payload=".$queries[$i++]; // 增加 i curl_setopt_array($ch,$options); curl_multi_add_handle($master, $ch); // 移除刚刚完成的curl句柄 curl_multi_remove_handle($master, $done['handle']); } 别的 { echo '失败于:'; var_dump($信息); echo '带有选项:'; var_dump($选项); // 请求失败。添加错误处理。 } } while ($running); curl_multi_close($master); 返回假; } 函数 parse_returns($data) { print_r($数据); } // 设置查询数量 $数据=数组( 0 => 'SC-010052214', 1 => 'SC-000032972', 2 => 'SC-012535460', 3 => 'SC-011257289', 4 =>“SC-010134078” ); // 设置选项数组 $选项=数组( '位置' => 'http://ibudev.wvus.org/websvc/actions/wvsMessageRouter.php', '阅读行' => 2, 'coptions' => NULL, '内容' => $数据, '故事' => '完整', '派对' => NULL, ); m_curl($选项); ?>
归档时间: |
|
查看次数: |
2996 次 |
最近记录: |