安卓网络请求
手机端
开发及运行环境
开发工具:Android Studio 3.3.2,安卓开发包SdkVersion 28,实现功能手机端向服务端请求车辆的位置信息。主线程新建AccessNetwork线程调用GetPostUtil工具类去向服务端发送请求与接受数据,并将数据显示到前端去。
权限请求
因为需要向服务端发送请求并接受服务端发送来的消息,所以app需要请求网络服务的权限。修改
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="club.yzren.iot">
<uses-permission android:name="android.permission.INTERNET"/><!-- 请求网络权限-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Get与Post请求工具类
定义一个工具类,可以向服务端发送Get与Post请求用来对服务端发送请求与接受服务端的响应信息。
类中有两个方法,并且放回值为Json数据。
//url为请求地址 params为请求的参数
public static String sendGet(String url, String params)
public static String sendPost(String url, String params)
其中用到的类
URLConnection
调用set方法设置url,通用连接属性,调用*connect()方法建立连接,最后再使用getHeaderFields()**获取服务端响应的数据。
package club.yzren.iot;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
public class GetPostUtil
{
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param params
* 请求参数,请求参数应该是name1=value1&name2=value2的形式。
* @return URL所代表远程资源的响应
*/
public static String sendGet(String url, String params)
{
String result = "";
BufferedReader in = null;
try
{
String urlName = url + "?" + params;
URL realUrl = new URL(urlName);
// 打开和URL之间的连接
URLConnection conn &#