使用LOL盒子的数据查询简单的战斗力信息

news/2024/11/23 0:36:32/

简单分析了一下LOL盒子战斗力查询工具网页版的请求和响应的结构,做了这么个工具。使用服务器名和角色名请求LOL盒子的服务器,从返回的网页中使用正则表达式获得战斗力的基本信息,信息在html中的位置如下。


后续有时间的话可能会在这个基础上继续丰富功能做其他数据的解析和展示和查询历史记录。

Activity代码


public class LOLPowerActivity extends Activity {private static final int MSG_GETPOWER_SUCCESS = 1;private static final int MSG_GETPOWER_FAIL = 2;private static final String[] servers = new String[] { "电信一", "电信二", "电信三", "电信四", "电信五","电信六", "电信七", "电信八", "电信九", "电信十", "电信十一", "电信十二", "电信十三", "电信十四" };private Handler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setTitle("LOL战斗力查询");setContentView(R.layout.layout_lolpower);getActionBar().setDisplayHomeAsUpEnabled(true);createHandler();init();}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if (item.getItemId() == android.R.id.home) {finish();}return super.onOptionsItemSelected(item);}private void init() {final Spinner spServer = (Spinner) findViewById(R.id.spinnerServer);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, servers);spServer.setAdapter(adapter);spServer.setSelection(0);final EditText etPlayer = (EditText) findViewById(R.id.editTextPlayer);Button btnSearch = (Button) findViewById(R.id.buttonSearch);btnSearch.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (spServer.getSelectedItemPosition() < 0|| etPlayer.getText().toString().length() == 0) {Toast.makeText(LOLPowerActivity.this, "条件不充分,没法查", Toast.LENGTH_LONG).show();return;}search(servers[spServer.getSelectedItemPosition()], etPlayer.getText().toString().trim());}});}private void createHandler() {final TextView tvResult = (TextView) findViewById(R.id.textViewResult);handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case MSG_GETPOWER_SUCCESS:String strResult = (String) msg.obj;if (strResult != null) {tvResult.setText(strResult);}break;case MSG_GETPOWER_FAIL:tvResult.setText("查询失败");break;default:break;}}};}private void search(final String strServer, final String strPlayer) {new Thread(new Runnable() {@Overridepublic void run() {String strUrl = "http://lolbox.duowan.com/playerDetail.php?"+ "callback=jQuery111109943135452922434_1413010378460&token=524740466"+ "&serverName=" + URLEncoder.encode(strServer) + "&playerName="+ URLEncoder.encode(strPlayer);URL url;try {url = new URL(strUrl);HttpURLConnection http = (HttpURLConnection) url.openConnection();http.setReadTimeout(1000 * 200);InputStream is = http.getInputStream();BufferedReader isr = new BufferedReader(new InputStreamReader(is,Charset.forName("UTF-8")));StringBuilder sb = new StringBuilder();String line;while ((line = isr.readLine()) != null) {sb.append(line);}String strUseful = getUseful(sb.toString());if (strUseful == null || strUseful.length() == 0) {Message msg = Message.obtain();msg.what = MSG_GETPOWER_FAIL;handler.sendMessage(msg);} else {Message msg = Message.obtain();msg.obj = strUseful;msg.what = MSG_GETPOWER_SUCCESS;handler.sendMessage(msg);}} catch (Exception e) {e.printStackTrace();Message msg = Message.obtain();msg.what = MSG_GETPOWER_FAIL;handler.sendMessage(msg);}}}).start();}/*** 从服务器返回中提取需要的信息* @param strInput* @return*/private String getUseful(String strInput) {if (strInput == null || strInput.length() == 0) {return "";}String strReg = "[0-9]+\\s\\=\\s[0-9]+\\(基础分\\)\\s\\+\\s[0-9]+\\(胜率分\\)\\s\\+\\s[0-9]+\\(胜场分\\)";Pattern pattern = Pattern.compile(strReg);Matcher matcher = pattern.matcher(strInput);while (matcher.find()) {return matcher.group();}return "";}

xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="5dp"android:orientation="vertical"tools:context=".LOLPowerActivity" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp" ><TextViewandroid:id="@+id/textViewServer"android:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical"android:text="服务器" /><Spinnerandroid:id="@+id/spinnerServer"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:ems="10" ></Spinner></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/textViewPlayer"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="角色名" /><EditTextandroid:id="@+id/editTextPlayer"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:ems="10" /><Buttonandroid:id="@+id/buttonhistory"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="历史" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/buttonSearch"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查询" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/textViewResult"android:layout_width="wrap_content"android:layout_height="wrap_content"android:singleLine="false" /></LinearLayout></LinearLayout>



http://www.ppmy.cn/news/408771.html

相关文章

英雄联盟数据分析专题(一)

写在前面的话 英雄联盟是一款在世界范围内拥有众多玩家的MOBA游戏&#xff0c;它陪伴了我们这一代人的成长。在游戏中以五人一队为单位分为红方和蓝方两个阵营&#xff0c;最先推掉对方基地水晶的队伍为胜者。队内每个玩家分担不同职责&#xff1a;上单&#xff0c;中单&#x…

超级详细!java实现阿里云视频直播功能

java实现阿里云视频直播 准备工作 [官方地址](https://help.aliyun.com/document_detail/198676.html?spma2c4g.446769.0.0.1567af3cOvfx8d)具体要准备什么东西官方文档写的很清楚了&#xff0c;我就不写了后端生成推流、播流地址 1.引入依赖 <!--阿里云直播--><de…

PostgreSQL创建数据库报错

ERROR:source database "template1"is being accessed by other users DETAIL:There are 2 other sessions using the database. 解决方案&#xff1a; CREATE DATABASE 数据库名称 WITH OWNER postgres ENCODING UTF8 TABLESPACE pg_default LC_COLLATE en_US.…

B站狂神Docker学习笔记

文章目录 0. 介绍1. 基础DevOps 开发运维基础名词 2 Docker配置与使用2.1 查看服务器linux系统版本2.2 查看系统配置2.3 安装Docker2.4 卸载Docker2.5 阿里云镜像加速2.6 回顾Hello-world流程2.7 底层原理2.8 为什么Docker比Vm快 3 Docker 常用命令3.1 帮助命令3.2 镜像命令doc…

【鸟哥杂谈】腾讯云 CentOS8 Linux环境下通过docker安装mysql

忘记过去&#xff0c;超越自己 ❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-01-15 ❤️❤️ 本篇更新记录 2023-01-15 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言&#x1f4dd;&#x1f64…

完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

公司在IDC机房有两台很高配置的服务器&#xff0c;计划在上面部署openstack云平台虚拟化环境&#xff0c;用于承载后期开发测试和其他的一些对内业务。 以下对openstack的部署过程及其使用做一详细介绍&#xff0c;仅仅依据本人实际经验而述&#xff0c;如有不当&#xff0c;敬…

HTTP之请求响应内容详解

&#xff08;尊重劳动成果&#xff0c;转载请注明出处&#xff1a;http://blog.csdn.NET/qq_25827845/article/details/54562339冷血之心的博客&#xff09; 目录 HTTP协议&#xff08;重点&#xff09; 1 安装HttpWatch 2 HTTP概述 3 请求协议 3.1 GET请求 3.2 PO…

docker学习

一.Docker入门 Docker 为什么会出现 2. Docker的历史 3. Docker最新超详细版教程通俗易懂 Docker是基于Go语言开发的&#xff01;开源项目 官网 官方文档Docker文档是超详细的 仓库地址 4. 虚拟化技术和容器化技术对比 4.1. 虚拟化技术的缺点 资源占用十分多 冗余步骤多 启动…