1. 程式人生 > >專案諮詢——用HttpClient查詢電話號碼歸屬地

專案諮詢——用HttpClient查詢電話號碼歸屬地

**

第一種方法

** public class MainActivity extends AppCompatActivity { private EditText input; private TextView info;

private final int UPDATE_UI = 1;

@SuppressLint(“HandlerLeak”) private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_UI: info.setText(msg.obj.toString()); break; } } };

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

input = findViewById(R.id.input);
info = findViewById(R.id.info);

findViewById(R.id.query).setOnClickListener(new View.OnClickListener() {
  @Override public void onClick(View v) {
    new Thread(
        new Runnable() {
          @Override public void run() {
            //在build.gradle中宣告使用
            //新增依賴
            //getRequestData(input.getText().toString());
            postRequestData(input.getText().toString());
          }
        }
    ).start();
  }
});

}

private void getRequestData(String phoneNum) { //1 建立 HttpClient HttpClient client = HttpClients.createDefault();

//HttpUriRequest
HttpGet get = new HttpGet(url + "?tel=" + phoneNum);

try {
  //shift f6 重構
  //執行請求
  HttpResponse response = client.execute(get);

  //獲取結果
  int statusCode = response.getStatusLine().getStatusCode();
  if (statusCode == 200) {
    String result = EntityUtils.toString(response.getEntity());
    mHandler.sendMessage(mHandler.obtainMessage(UPDATE_UI, result));
  }
} catch (IOException e) {
  e.printStackTrace();
}

}

private void postRequestData(String phoneNum) { try { //建立HttpClient HttpClient client = HttpClients.createDefault();

  //post請求
  HttpPost post = new HttpPost(url);

  // 構建請求引數
  List<NameValuePair> params = new ArrayList<>();
  params.add(new BasicNameValuePair("tel", phoneNum));

  //請求體    UrlEncodedFormEntity
  post.setEntity(new UrlEncodedFormEntity(params));

  //執行請求
  HttpResponse response = client.execute(post);

  //獲取結果
  int statusCode = response.getStatusLine().getStatusCode();
  if (statusCode == 200) {
    //////////////////////////////////////////////////////////
    String result = EntityUtils.toString(response.getEntity());
    mHandler.sendMessage(mHandler.obtainMessage(UPDATE_UI, result));
  }
} catch (UnsupportedEncodingException e) {
  e.printStackTrace();
} catch (ClientProtocolException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}

} }

**

第二種方法

** public class DemoActivity extends AppCompatActivity {

private EditText input; private TextView info;

private final int UPDATE_UI = 1;

@SuppressLint(“HandlerLeak”) private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_UI: info.setText(msg.obj.toString()); break; } } };

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

input = findViewById(R.id.input);
info = findViewById(R.id.info);

findViewById(R.id.query).setOnClickListener(new View.OnClickListener() {
  @Override public void onClick(View v) {
    new Thread(
        new Runnable() {
          @Override public void run() {
            //在build.gradle中宣告使用
            //新增依賴
            requestData(input.getText().toString());
          }
        }
    ).start();
  }
});

}

private void requestData(String phoneNum) { try { //請求配置:連線超時 RequestConfig requestConfig = RequestConfig .custom() .setConnectTimeout(5000) .build(); //建立httpclient //HttpClient client = HttpClients.createDefault(); CloseableHttpClient client = HttpClients .custom() .setDefaultRequestConfig(requestConfig) .build();

  //構建請求物件
  HttpUriRequest request = RequestBuilder
      //請求方法
      .get()
      //.post()
      //請求url
      .setUri(url)
      //請求引數
      .addParameter("tel", phoneNum)
      .build();

  //執行一個請求
  HttpResponse response = client.execute(request);
  int statusCode = response.getStatusLine().getStatusCode();
  if (statusCode == 200) {
    String result = EntityUtils.toString(response.getEntity());
    mHandler.sendMessage(mHandler.obtainMessage(UPDATE_UI, result));
  }
} catch (IOException e) {
  e.printStackTrace();
}

} }