在build.gradle中声明使用:
//声明 使用
android {
compileSdkVersion 28
//声明 使用
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.example.day3"
minSdkVersion 14
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//依赖
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
}
XML中的代码:
<EditText
android:id="@+id/input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="18679906337"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/query"
app:layout_constraintTop_toTopOf="parent"
/>
<Button
android:id="@+id/query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="query"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@id/input"
/>
<TextView
android:id="@+id/info"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/query"
/>
Activity中的代码:
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 String url = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm";
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));
//请求体
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();
}
}