獲取電話資訊的post網路請求
阿新 • • 發佈:2018-12-18
XML的程式碼:
<EditText android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/text" android:layout_alignParentEnd="true" android:text="獲取" /> <TextView android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/text" android:layout_margin="5dp" />
Activity中的程式碼:
private final int UPDATE_UI=1; private String lujing = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm"; private EditText text; private TextView textView; private Button button; @SuppressLint("HandlerLeak") private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case UPDATE_UI: textView.setText(msg.obj.toString()); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = findViewById(R.id.text); textView = findViewById(R.id.textview); button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!keyong()){ Toast.makeText(MainActivity.this, "網路不可用", Toast.LENGTH_SHORT).show(); return ; } new Thread( new Runnable() { @Override public void run() { huoqu(text.getText().toString()); } } ).start(); } }); } //判斷是否有可用的網路 private boolean keyong(){ //獲取網路連線管理服務 ConnectivityManager cm= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); //需要訪問網路狀態許可權 NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo(); return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable(); } private void huoqu(String num){ try { //定義url地址 URL url=new URL(lujing); //開啟連線 HttpURLConnection urlConnection= (HttpURLConnection) url.openConnection(); //請求方法 urlConnection.setRequestMethod("POST"); //讀取超時 urlConnection.setReadTimeout(5000); //連線超時 urlConnection.setConnectTimeout(5000); //輸出標識 urlConnection.setDoOutput(true); //向伺服器輸出資料 urlConnection.getOutputStream().write(("tel="+num).getBytes()); //重新整理介面卡 urlConnection.getOutputStream().flush(); //獲取狀態值 int responseCode = urlConnection.getResponseCode(); //接受資料 String result; if (responseCode==200){ result=zifu(urlConnection.getInputStream(),"gbk"); }else{ result="error"+responseCode; } handler.sendMessage(handler.obtainMessage(UPDATE_UI,result)); } catch (Exception e) { e.printStackTrace(); } } //位元組流轉化為字元流 private String zifu(InputStream zijie,String geshi) throws IOException { InputStreamReader inputStreamReader=new InputStreamReader(zijie,geshi); BufferedReader buff=new BufferedReader(inputStreamReader); StringBuilder builder=new StringBuilder(); for (String imp=buff.readLine();imp!=null;imp=buff.readLine()){ builder.append(imp); } return builder.toString(); }