Android Studio 实现网络请求 - 5种方法
Android Studio 实现网络请求 - 5种方法
本教程将介绍如何在Android Studio中使用不同的方法实现网络请求,并提供相应的代码示例。
1. 使用Java语言实现
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class CoocNet {
private static final String URL = "http://172.30.9.250:10000/portal_ylsy/login.do";
public static void coocnet(String usename, String ip) throws IOException {
Map<String, String> data = new HashMap<>();
data.put("timeout", "5000");
data.put("piresunalw", ip);
data.put("picanalw", "");
data.put("camresuanlw", "2c:48:81:6c:a1:1d");
data.put("pisab", "");
data.put("portalssid", "YLU-Living");
data.put("servicetype", "0");
data.put("macautologin", "nomacAuto");
data.put("schoolN", usename);
data.put("schoolP", "sssss");
String sss = "http://172.30.9.250:10000/portal_ylsy/portal_ylsy/loginpage/login.jsp?wlanuserip=" + ip + "&wlanacip=&basip=&wlanusermac=2c:48:81:6c:a1:1d&portalssid=YLU-Living";
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), getParams(data));
Request request = new Request.Builder()
.url(URL)
.post(body)
.addHeader("Accept", "*/*")
.addHeader("Accept-Encoding", "gzip, deflate")
.addHeader("Accept-Language", "zh-CN,zh;q=0.9")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Host", "172.30.9.250:10000")
.addHeader("Content-Length", "646")
.addHeader("Connection", "keep-al ive")
.addHeader("Origin", "http://172.30.9.250:10000")
.addHeader("Referer", sss)
.addHeader("User-Agent", "ssss")
.addHeader("X-Requested-With", "XMLHttpRequest")
.build();
Call call = client.newCall(request);
Response response = call.execute();
System.out.println(response.body().string());
}
private static String getParams(Map<String, String> params) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
return sb.toString().substring(0, sb.length() - 1);
}
}
2. 使用Kotlin语言实现
import java.io.IOException
import okhttp3.*
import java.util.HashMap
class CoocNet {
private val URL = "http://172.30.9.250:10000/portal_ylsy/login.do"
fun coocnet(usename: String, ip: String) {
val data = HashMap<String, String>()
data["timeout"] = "5000"
data["piresunalw"] = ip
data["picanalw"] = ""
data["camresuanlw"] = "2c:48:81:6c:a1:1d"
data["pisab"] = ""
data["portalssid"] = "YLU-Living"
data["servicetype"] = "0"
data["macautologin"] = "nomacAuto"
data["schoolN"] = usename
data["schoolP"] = "sssss"
val sss = "http://172.30.9.250:10000/portal_ylsy/portal_ylsy/loginpage/login.jsp?wlanuserip=" + ip + "&wlanacip=&basip=&wlanusermac=2c:48:81:6c:a1:1d&portalssid=YLU-Living"
val client = OkHttpClient()
val body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), getParams(data))
val request = Request.Builder()
.url(URL)
.post(body)
.addHeader("Accept", "*/*")
.addHeader("Accept-Encoding", "gzip, deflate")
.addHeader("Accept-Language", "zh-CN,zh;q=0.9")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Host", "172.30.9.250:10000")
.addHeader("Content-Length", "646")
.addHeader("Connection", "keep-al ive")
.addHeader("Origin", "http://172.30.9.250:10000")
.addHeader("Referer", sss)
.addHeader("User-Agent", "ssss")
.addHeader("X-Requested-With", "XMLHttpRequest")
.build()
val call = client.newCall(request)
val response = call.execute()
println(response.body()?.string())
}
private fun getParams(params: Map<String, String>): String {
val sb = StringBuilder()
for ((key, value) in params) {
sb.append(key).append("=").append(value).append("&")
}
return sb.toString().substring(0, sb.length - 1)
}
}
3. 使用Retrofit库进行封装
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.POST
interface ApiService {
@FormUrlEncoded
@POST("portal_ylsy/login.do")
fun coocnet(
@Field("timeout") timeout: String,
@Field("piresunalw") ip: String,
@Field("picanalw") picanalw: String,
@Field("camresuanlw") camresuanlw: String,
@Field("pisab") pisab: String,
@Field("portalssid") portalssid: String,
@Field("servicetype") servicetype: String,
@Field("macautologin") macautologin: String,
@Field("schoolN") usename: String,
@Field("schoolP") schoolP: String
): Call<String>
}
class CoocNet {
private val BASE_URL = "http://172.30.9.250:10000/"
fun coocnet(usename: String, ip: String) {
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService = retrofit.create(ApiService::class.java)
val call = apiService.coocnet(
"5000",
ip,
"",
"2c:48:81:6c:a1:1d",
"",
"YLU-Living",
"0",
"nomacAuto",
usename,
"sssss"
)
call.enqueue(object : retrofit2.Callback<String> {
override fun onResponse(call: Call<String>, response: retrofit2.Response<String>) {
println(response.body())
}
override fun onFailure(call: Call<String>, t: Throwable) {
println(t.message)
}
})
}
}
4. 使用OkHttp库进行网络请求
import okhttp3.*
import java.io.IOException
import java.util.HashMap
class CoocNet {
private val URL = "http://172.30.9.250:10000/portal_ylsy/login.do"
fun coocnet(usename: String, ip: String) {
val data = HashMap<String, String>()
data["timeout"] = "5000"
data["piresunalw"] = ip
data["picanalw"] = ""
data["camresuanlw"] = "2c:48:81:6c:a1:1d"
data["pisab"] = ""
data["portalssid"] = "YLU-Living"
data["servicetype"] = "0"
data["macautologin"] = "nomacAuto"
data["schoolN"] = usename
data["schoolP"] = "sssss"
val sss = "http://172.30.9.250:10000/portal_ylsy/portal_ylsy/loginpage/login.jsp?wlanuserip=" + ip + "&wlanacip=&basip=&wlanusermac=2c:48:81:6c:a1:1d&portalssid=YLU-Living"
val client = OkHttpClient()
val body = FormBody.Builder().apply {
data.forEach { (key, value) -> add(key, value) }
}.build()
val request = Request.Builder()
.url(URL)
.post(body)
.addHeader("Accept", "*/*")
.addHeader("Accept-Encoding", "gzip, deflate")
.addHeader("Accept-Language", "zh-CN,zh;q=0.9")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Host", "172.30.9.250:10000")
.addHeader("Content-Length", "646")
.addHeader("Connection", "keep-al ive")
.addHeader("Origin", "http://172.30.9.250:10000")
.addHeader("Referer", sss)
.addHeader("User-Agent", "ssss")
.addHeader("X-Requested-With", "XMLHttpRequest")
.build()
val call = client.newCall(request)
call.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
println(e.message)
}
override fun onResponse(call: Call, response: Response) {
println(response.body()?.string())
}
})
}
}
5. 使用Volley库进行网络请求
import android.app.Activity;
import android.content.Context;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
public class CoocNet {
private static final String URL = "http://172.30.9.250:10000/portal_ylsy/login.do";
public static void coocnet(Activity activity, String usename, String ip) {
RequestQueue queue = Volley.newRequestQueue(activity);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println(error.getMessage());
}
}) {
@Override
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("timeout", "5000");
params.put("piresunalw", ip);
params.put("picanalw", "");
params.put("camresuanlw", "2c:48:81:6c:a1:1d");
params.put("pisab", "");
params.put("portalssid", "YLU-Living");
params.put("servicetype", "0");
params.put("macautologin", "nomacAuto");
params.put("schoolN", usename);
params.put("schoolP", "sssss");
return params;
}
@Override
public Map<String, String> getHeaders() throws com.android.volley.AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put("Accept", "*/*");
headers.put("Accept-Encoding", "gzip, deflate");
headers.put("Accept-Language", "zh-CN,zh;q=0.9");
headers.put("Content-Type", "application/x-www-form-urlencoded");
headers.put("Host", "172.30.9.250:10000");
headers.put("Content-Length", "646");
headers.put("Connection", "keep-al ive");
headers.put("Origin", "http://172.30.9.250:10000");
headers.put("Referer", "http://172.30.9.250:10000/portal_ylsy/portal_ylsy/loginpage/login.jsp?wlanuserip=" + ip + "&wlanacip=&basip=&wlanusermac=2c:48:81:6c:a1:1d&portalssid=YLU-Living");
headers.put("User-Agent", "ssss");
headers.put("X-Requested-With", "XMLHttpRequest");
return headers;
}
};
queue.add(stringRequest);
}
}
以上代码只是示例,需要根据实际情况进行修改。您可以选择最适合您的方法,并根据您的需求进行调整。
原文地址: https://www.cveoy.top/t/topic/m8b9 著作权归作者所有。请勿转载和采集!