android异步通信技术-手机号归属地查询之运势如何

来源:互联网 发布:电信屏蔽80端口 编辑:程序博客网 时间:2024/05/17 23:50

主页面:

<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:orientation="vertical"
    tools:context=".MainActivity" >


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入电话号码" />
    <EditText 
        
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/etMobielNum"
        android:hint="电话号码"
        />
    <Button 
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:id="@+id/btn_select"
        android:text="查询"
        />


</LinearLayout>



package com.csdn.hbsi;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {


private EditText et;

private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void click(View v){
et=(EditText) findViewById(R.id.etMobielNum);
btn=(Button) findViewById(R.id.btn_select);

String url = "http://www.096.me/api.php?phone="+et.getText().toString().trim()+"&mode=txt";
System.out.println(url);
//实例化异步任务类
ays ags=new ays(getApplicationContext(),btn);
//执行异步任务类
ags.execute(url);

}


}

另外说一句别忘添加internet权限

package com.csdn.hbsi;


import java.io.ByteArrayOutputStream;
import java.io.InputStream;


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;


import android.content.Context;
import android.os.AsyncTask;
import android.widget.Button;
import android.widget.Toast;


public class ays extends AsyncTask<String, Void, String>{

private Button btn;
private Context context;
public ays(Context _context,Button _btn){
this.btn=_btn;
this.context=_context;


}




@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
//当我们点击查询以后,异步任务开始之前
btn.setText("查询...");
super.onPreExecute();
}





/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub


}


@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
System.out.println("正在后台运行中...");
String getStr="";
try {
Thread.sleep(3000);
//进行网络连接,Http的方式
HttpClient client=new DefaultHttpClient();
//定义get请求对象
HttpGet get=new HttpGet(params[0]);
//发送get请求,并且返回响应的结果
HttpResponse response=client.execute(get);
//判断是否响应完成
if(response.getStatusLine().getStatusCode()==200){
//响应的实体
HttpEntity he=response.getEntity();
//读取返回的数据流
InputStream is=he.getContent();
//将返回的输出流,转化为字节数组,最后构造一个新的字符串
getStr=new String(getByteData(is),"GBK");

System.out.println("======"+getStr);

}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return getStr;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
btn.setText("查询");

Toast.makeText(context, result, 0).show();
super.onPostExecute(result);
}
/**

* 根据InputStream 返回二进制的流数组
* @param is
* @return
*/
public static byte[] getByteData(InputStream is){

//声明一个ByteArrayOutputStream
ByteArrayOutputStream bos = new ByteArrayOutputStream();
   try {


//定义缓冲区
byte[] buffer = new byte[1024];
//读取is中的数据,写入到bos中
int len = -1;
while ((len = is.read(buffer)) != -1) {


//写入到bos中
bos.write(buffer, 0, len);


}

is.close();

bos.close();
} catch (Exception e) {
e.printStackTrace();
}
 
 return bos.toByteArray();

}



}