前言

很早从前就来看网上有一个有线电话安全警卫和手提式有线电话机帮手的源码,向来没看看在那之中的一对贯彻,今日下载后运营,发现手提式有线电话机卫士其实只是个界面短信公共感觉没达成,有待具体分析,本文将分析手提式有线电话机帮手Reade号码归属地询问。

源码传送门:

git clone git@github.com:avenwu/mobilehelper.git 或

git clone https://github.com/avenwu/mobilehelper.git

正文使用到的技术如下:

正文

要查归属地自小编以为有二种思路,一是本土数据库查询,那些必要您有多个各大运营商手提式有线电话机号段的数额,另贰个正是走互联网查询,现在网上有很多那种提供号码查询的站点很多,不过会回去许多十一分的数据,搜索了下找到两篇文章,内容主导等同,不亮堂这篇是原创:

http://blog.sina.com.cn/s/blog_7bac4707010143o2.html

http://www.cnblogs.com/88223100/archive/2013/03/06/2945474.html

地点列出的骨子里就是一相比较好的干净api,再次回到的数量简洁明了,首要有xml和json二种格式,

明日接纳https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=13717830629用作查询的api,

其回到结果如下:


phone( { meta:{ result: “0”, result_info: “”, jump_url: “” }, data: {
operator: “移动”, area: “江苏”, area_operator: “广西移动” } } )


那一个是json格式,但不是完全正确,所以解析时要做一些改动。
  json数据的不利格式是: 

(1)多个对象以“{”(左括号)初始,“}”(右括号)甘休。

(2)每种“名称”后跟一个“:”(冒号);

(3)“‘名称/值’ 对”之间利用“,”(逗号)分隔。

 

发请求时,只需将参数换为要询问的手提式有线电话机号即可:

String url = PRE_URL.replace("phoneNumber", editPhonenumber
                        .getText().toString().trim());
                phoneRequest = new StringRequest(url, new Listener<String>() {
                    @Override
                    public void onResponse(String arg0) {
                        /*
                         * phone( { meta: { result: "0", result_info: "",
                         * jump_url: "" }, data: { operator: "移动", area: "江苏",
                         * area_operator: "江苏移动" } } )
                         */
                        int start = arg0.indexOf("{");
                        int end = arg0.lastIndexOf("}") + 1;
                        JSONObject json = null;
                        try {
                            json = new JSONObject(arg0.substring(start, end));
                            StringBuffer result = new StringBuffer();
                            result.append("手机号:"
                                    + editPhonenumber.getText().toString()
                                            .trim());
                            result.append("\n运营商:"
                                    + json.getJSONObject("data").get(
                                            "area_operator"));
                            tvResult.setText(result.toString());
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError arg0) {
                        Toast.makeText(MainActivity.this,
                                R.string.query_failed, Toast.LENGTH_SHORT)
                                .show();
                    }
                });
                NetManager.queryPhoneNumber(phoneRequest);

 

相关文章

网站地图xml地图