学习内容:
Android如何发送带参数的GET请求
详解:
// 构建URL,添加查询参数
HttpUrl.Builder urlBuilder = HttpUrl.parse(LOGIN_URL).newBuilder();
urlBuilder.addQueryParameter("phone", phone);
urlBuilder.addQueryParameter("code", code);
// 创建一个 Request 对象,设置传输的数据和其他的请求参数,使用get请求
Request request = new Request.Builder()
.url(urlBuilder.build()) // 替换为实际的服务器URL
.build();
代码详解:
private void login() {
final String phone = phoneEditText.getText().toString().trim();
final String code = editCodeTest.getText().toString().trim();
Log.d("debug",phone + code);
// 在代码中创建一个 OkHttpClient 实例:
OkHttpClient client = new OkHttpClient();
// 自定义数据对象转换为 RequestBody
MyDataObject dataObject = new MyDataObject(phone,code,"");
Gson gson = new Gson();
String jsonStr = gson.toJson(dataObject);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonStr);
// 构建URL,添加查询参数
HttpUrl.Builder urlBuilder = HttpUrl.parse(LOGIN_URL).newBuilder();
urlBuilder.addQueryParameter("phone", phone);
urlBuilder.addQueryParameter("code", code);
// 创建一个 Request 对象,设置传输的数据和其他的请求参数,使用get请求
Request request = new Request.Builder()
.url(urlBuilder.build()) // 替换为实际的服务器URL
.build();
// 使用 OkHttpClient 发送请求,并处理响应:
// 发送请求并处理响应
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
Constants.loginState = 1;
String jsonData = response.body().string();
Log.d("debug1",jsonData);
// 示例:直接访问 JSON 数据中的字段
JSONObject jsonObject = new JSONObject(jsonData);
String result = jsonObject.getString("status");
String data = jsonObject.getString("message");
if (result.equals("success")) {
// 获取已登录用户的个人信息
Gson gsonBack = new Gson();
User user = gsonBack.fromJson(data, User.class);
UserLoginInfo.getInstance().setUserName(user.getUserName());
UserLoginInfo.getInstance().setAvatar(user.getAvatar());
UserLoginInfo.getInstance().setSignature(user.getSignature());
UserLoginInfo.getInstance().setId(user.getId());
UserLoginInfo.getInstance().setPhone(user.getPhone());
UserLoginInfo.getInstance().setBirthday(user.getBirthday());
UserLoginInfo.getInstance().setGender(user.getGender());
UserLoginInfo.getInstance().setToken(1);
Intent intent = new Intent(LoginActivity.this, bottomNavigationViewActivity.class);
// 启动下一个Activity
startActivity(intent);
runOnUiThread(new Runnable() {
@Override
public void run() {
//Toast.makeText(LoginActivity.this, data, Toast.LENGTH_SHORT).show();
}
});
}
// ... 处理返回的 JSON 数据
} else {
// 处理请求失败
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
throw new RuntimeException(e);
}
}