目录
一、前言
二、后端
三、Android端
(1)HTTP限制访问
——network_security_config.xml
——AndroidManifest.xml
(2)XML页面布局
(3)HttpURLConnection工具类代码
(4)MainActivity代码
四、效果测试
五、总结
公司要求使用原生方式请求后端API接口(SpringBoot),在此做个记录。
使用Mybatis-Plus查询MySQL单条数据,返回JSON格式到Android端。后端Controller代码如下:
@ResponseBody
@PostMapping(value = "/patch")
public AdConfigBean selectConfigByPkgName(@RequestParam("gkpn") String pkgName) {
return adconfigService.getOne(new QueryWrapper()
.select("*")
.eq("pkg_name", pkgName), false);
}
Android对HTTP协议的请求已经不支持了,需要进行放行配置。先创建XML,再到AndroidManifest.xml配置文件中引用。
布局为两个控件,单击按钮,请求成功,文本框展示后端返回的JSON数据。
public class NetworkUtil {
public static String doGet(String urlPath) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(urlPath).openConnection();
conn.setRequestMethod("GET");
if (200 == conn.getResponseCode()) {
return new BufferedReader(new InputStreamReader(conn.getInputStream())).readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
return "{ \"success\": false,\n \"errorMsg\": \"后台服务器开小差了!\",\n \"result\":{}}";
}
public static String doPost(String urlPath, HashMap paramsMap) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(urlPath).openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
StringBuilder result = new StringBuilder();
for (HashMap.Entry entity : paramsMap.entrySet()) {
result.append("&").append(entity.getKey()).append("=").append(entity.getValue());
}
conn.getOutputStream().write(result.substring(1).getBytes());
if (200 == conn.getResponseCode()) {
return new BufferedReader(new InputStreamReader(conn.getInputStream())).readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
return "{ \"success\": false,\n \"errorMsg\": \"后台服务器开小差了!\",\n \"result\":{}}";
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
TextView tvShow = findViewById(R.id.tv_show);
Button btnSendPost = findViewById(R.id.btn_sendPost);
btnSendPost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
HashMap paramsMap = new HashMap<>();
paramsMap.put("gkpn", "com.time.hxzbyx.meta");
new Thread(new Runnable() {
@Override
public void run() {
String resultJson = NetworkUtil.doPost("http://www.wugua.com.cn/patch", paramsMap);
runOnUiThread(new Runnable() {
@Override
public void run() {
tvShow.setText(resultJson);
Log.i("resultJson", resultJson);
}
});
}
}).start();
}
});
}
}
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~