專案諮詢——用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();
}
} }