先测试网络功能,新建一个NetHandler类继承Handler类并重写handlerMessage()方法,然后新建一个NetThread类实现Runnable接口用于实现网络连接,然后在handlerMessage()中实现接受Web端的数据并Toast出来

在这里,Web端print的是一个json型的字符串,所以Android端接受到这个字符串要进行解析,这里使用的是alibaba的fastjson库:implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.75'

经过测试,成功Toast出数据库中对应md5码的pwd
master
ThankVinci 4 years ago
parent c204b5ee1e
commit 612d0fa7b8

@ -36,4 +36,5 @@ dependencies {
testImplementation 'junit:junit:4.+' testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.75'
} }

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.thankvinci.CloudKey"> package="com.thankvinci.CloudKey">
<uses-permission android:name="android.permission.INTERNET"/>
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"

@ -3,6 +3,12 @@ package com.thankvinci.CloudKey;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
import com.thankvinci.CloudKey.NetUtils.NetHandler;
import com.thankvinci.CloudKey.NetUtils.NetThread;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
@ -10,5 +16,14 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
Handler handler = new NetHandler(this);
TextView textView = findViewById(R.id.text);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread t = new Thread(new NetThread(handler));
t.start();
}
});
} }
} }

@ -0,0 +1,24 @@
package com.thankvinci.CloudKey.NetUtils;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import com.thankvinci.CloudKey.MainActivity;
public class NetHandler extends Handler {
private MainActivity activity;
public NetHandler(MainActivity activity){
this.activity = activity;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
Toast.makeText(activity,msg.getData().getString("key"),Toast.LENGTH_SHORT).show();
break;
}
}
}

@ -0,0 +1,59 @@
package com.thankvinci.CloudKey.NetUtils;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import androidx.loader.content.CursorLoader;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class NetThread implements Runnable {
Handler handler;
public NetThread(Handler handler){
this.handler = handler;
}
@Override
public void run(){
Message msg = new Message();
String data = getNetWork("http://1.14.144.194:8080/cscp/cscp?function=query&MD5=123456789abcdef0123456789abcd4f0");
JSONObject jsonObject = JSON.parseObject(data);
Bundle dataPackage = new Bundle();
dataPackage.putString("key",jsonObject.getString("pwd"));
msg.what = 0;
msg.setData(dataPackage);
handler.sendMessage(msg);
}
public String getNetWork(String str_url){
StringBuilder builder = new StringBuilder();
String result = "2";
try{
URL url = new URL(str_url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(8000);
connection.connect();
InputStream inputStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
while((result=reader.readLine())!=null){
builder.append(result);
}
connection.disconnect();
}catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
}

@ -10,6 +10,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Hello World!" android:text="Hello World!"
android:id="@+id/text"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"

@ -116,5 +116,10 @@ private String queryPassword(PrintWriter writer, Connection conn, String filemd5
由于AndroidP之后默认的互联网协议是https,而不能用http,申请https需要域名,还要备案,挺麻烦的,所以需要在AndroidManifest文件中<application>标签下声明 android:usesCleartextTraffic="true" 才可使用http协议 由于AndroidP之后默认的互联网协议是https,而不能用http,申请https需要域名,还要备案,挺麻烦的,所以需要在AndroidManifest文件中<application>标签下声明 android:usesCleartextTraffic="true" 才可使用http协议
**2021/6/8**
先测试网络功能,新建一个NetHandler类继承Handler类并重写handlerMessage()方法,然后新建一个NetThread类实现Runnable接口用于实现网络连接,然后在handlerMessage()中实现接受Web端的数据并Toast出来
在这里,Web端print的是一个json型的字符串,所以Android端接受到这个字符串要进行解析,这里使用的是alibaba的fastjson库:implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.75'
经过测试,成功Toast出数据库中对应md5码的pwd
Loading…
Cancel
Save