写一个程序用来查询手机号码的归属地(使用的是HttpURLConnection的get提交方式)

来源:互联网 发布:三维游戏制作软件 编辑:程序博客网 时间:2024/05/14 12:09

需求 : 

写一个程序用来获取手机号码的归属地


思路 :

在网络上有一个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机制,就可以直接进行界面的修改了,

实际上修改界面的操作仍然是运行在主线程中.

0 0
原创粉丝点击