写一个程序用来查询手机号码的归属地(使用的是HttpURLConnection的get提交方式)
2015-06-10 21:18
741 查看
需求 :
写一个程序用来获取手机号码的归属地
思路 :
在网络上有一个web服务器,专门用来提供手机号的归属地信息
我们要做的就是访问该服务器,提供手机号,然后获取服务器发来的响应码
从响应码中解析出需要的归属地信息。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -
- - -
需求 :
首先自定义个getGSDFromNet方法,用来获取手机号的归属地
步骤 :
1,准备好一个URL,用来将手机号发送给服务器
2,通过URL对象获得个HttpURLConnection连接
3,设置好连接的请求方式,连接超时时间,读取超时时间,然后开始连接
4,得到连接后的提示码
5,如果提示码为200,则表示连接成功,开始获取服务器发回的相应码
6,将响应码字符串中的归属地信息提取出来
代码 :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- - - - - - - - - - - - - - - - - - - - - - - - -
需求 :
写一个程序用来获取手机号码的归属地
步骤 :
步骤 :
* 1,定义好布局文件和权限的添加.
* 2,在主线程中获取需要的控件
* 3,开启一个子线程,在子线程中执访问网络的操作,将请求码发送过去,获取服务器发送回来的响应码,
* 开始解析响应码,得到需要的信息.
* 4,.调用 Activity 的 runOnUiThread方法,直接在子线程中修改界面
注意 :
runOnUiThread方法是Activity中的方法,作用是让run()中的操作运行在主线程中,这样就无需使用Handler机制,就可以直接进行界面的修改了,
实际上修改界面的操作仍然是运行在主线程中.
代码 :
注意 :
runOnUiThread(new Runnable() {
public void run() {
//修改界面
textView.setText(gSD);
}
});
runOnUiThread方法是Activity的方法,作用是让run()中的操作运行在主线程中,这样就无需使用Handler机制,就可以直接进行界面的修改了,
实际上修改界面的操作仍然是运行在主线程中.
写一个程序用来获取手机号码的归属地
思路 :
在网络上有一个web服务器,专门用来提供手机号的归属地信息
我们要做的就是访问该服务器,提供手机号,然后获取服务器发来的响应码
从响应码中解析出需要的归属地信息。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -
- - -
需求 :
首先自定义个getGSDFromNet方法,用来获取手机号的归属地
步骤 :
1,准备好一个URL,用来将手机号发送给服务器
2,通过URL对象获得个HttpURLConnection连接
3,设置好连接的请求方式,连接超时时间,读取超时时间,然后开始连接
4,得到连接后的提示码
5,如果提示码为200,则表示连接成功,开始获取服务器发回的相应码
6,将响应码字符串中的归属地信息提取出来
代码 :
<span style="white-space:pre"> </span> //自定义个方法,用来获取手机号的归属地 protected String getGSDFromNet(String phone) { try { //1,准备好一个URL,用来将手机号发送给服务器 URL url = new URL("http://webservice.webxml.com.cn//WebServices/MobileCodeWS.asmx/ge" + <span style="white-space:pre"> </span>"tMobileCodeInfo?mobileCode="+phone+"&userID="); //2,通过URL对象获得个HttpURLConnection连接对象 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //3,设置好连接的请求方式,连接超时时间,读取超时时间,然后开始连接服务器 conn.setRequestMethod("GET"); conn.setReadTimeout(5000); conn.setConnectTimeout(5000); conn.connect(); //4,得到连接后的提示码 int responseCode = conn.getResponseCode(); if(responseCode == 200)//5,如果提示码为200,则表示连接成功,开始获取服务器发回的相应码 { InputStream is = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8")); StringBuffer sb = new StringBuffer(); String text ; while((text = br.readLine()) != null) { sb.append(text+"/r/n"); } text = sb.toString(); br.close(); //6,将响应码字符串中的归属地信息提取出来 int start = text.indexOf("\">")+2; int end = text.indexOf("</"); String gSD = text.substring(start, end); //将获得的归属地信息返回 return gSD; } } catch (Exception e) { e.printStackTrace(); } return null; }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- - - - - - - - - - - - - - - - - - - - - - - - -
需求 :
写一个程序用来获取手机号码的归属地
步骤 :
步骤 :
* 1,定义好布局文件和权限的添加.
* 2,在主线程中获取需要的控件
* 3,开启一个子线程,在子线程中执访问网络的操作,将请求码发送过去,获取服务器发送回来的响应码,
* 开始解析响应码,得到需要的信息.
* 4,.调用 Activity 的 runOnUiThread方法,直接在子线程中修改界面
注意 :
//runOnUIThread是Activity的方法,作用是让run方法中的操作运行在主线程中 runOnUiThread(new Runnable() { public void run() { //修改界面 textView.setText(gSD); } });
runOnUiThread方法是Activity中的方法,作用是让run()中的操作运行在主线程中,这样就无需使用Handler机制,就可以直接进行界面的修改了,
实际上修改界面的操作仍然是运行在主线程中.
代码 :
public class MainActivity extends Activity { private EditText editText; private TextView textView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //2,在主线程中获取需要的控件 editText = (EditText) findViewById(R.id.editText); textView = (TextView) findViewById(R.id.textView); } //点击事件 public void onClick(View v) { final String phone = editText.getText().toString(); //3,开启一个子线程,在子线程中执访问网络的操作,将请求码发送过去,获取服务器发送回来的响应码,开始解析相应码,得到需要的信息. new Thread(new Runnable() { public void run() { //调用getgSDFromNet方法,来获取手机号的归属地信息 final String gSD = getGSDFromNet(phone); //4,调用 Activity 的 runOnUiThread方法,直接在子线程中修改界面 //runOnUIThread是Activity的方法,作用是让run方法中的操作运行在主线程中 runOnUiThread(new Runnable() { public void run() { //修改界面 textView.setText(gSD); } }); } }).start(); } }
注意 :
runOnUiThread(new Runnable() {
public void run() {
//修改界面
textView.setText(gSD);
}
});
runOnUiThread方法是Activity的方法,作用是让run()中的操作运行在主线程中,这样就无需使用Handler机制,就可以直接进行界面的修改了,
实际上修改界面的操作仍然是运行在主线程中.
相关文章推荐
- [FZYZOJ 2108] 连接网络
- JAVA课程实验报告 实验五 Java网络编程及安全
- http协议中get与post区别详解
- java发送http的get、post请求
- python解析pcap文件中的http数据包
- TCP并发服务器,每个客户一个子进程
- Java实验五报告——TCP传输及加解密
- 常见的HTTP状态码
- httpwatch详解
- 黑马程序员java学习笔记——网络编程
- Nginx作为WEB服务相关配置(性能优化,网络连接,访问控制,虚拟主机,https等等)
- 第二十五篇 苦逼的人生该作何解释
- java+mysql实现网络爬虫
- http2.2常用配置(虚拟主机,访问控制,压缩,缓存,压力测试)
- [android]完美解决ListView加载网络图片乱跳问题
- linux 网络参数配置命令
- 编译安装LAMP(一)――编译安装httpd-2.4.4
- TCP协议的KeepAlive机制与HeartBeat心跳包
- 图解TCP/IP 第5版 阅读计划
- 网络攻防初步