网站首页 > 开源技术 正文
首先是安卓端,我主要上传一个User对象,下面是安卓端的代码通过okhttp3,gson编译成json格式上传
需要引用
compile 'com.google.code.gson:gson:2.8.1'
下面是客户端的一个功能的代码,主要将对象User上传给服务器,其中通过bundle将返回的对象传入到别的activity。本来想删除的,但是对于初学者应该还是很实用,gson.toJson()这个方法就是将user对象编译成json格式的字符串,方便上传给服务器
[html] view plain copy
- /**
- * 发送post请求
- */
- public User user = new User();
- public void postRequest(){
- OkHttpClient client = new OkHttpClient();
- user.setUsername(username.getText().toString());
- user.setPassword(content.getText().toString());
- Gson gson = new Gson();
- //使用Gson将对象转换为json字符串
- String json = gson.toJson(user);
- RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")
- , json);
- Request request = new Request.Builder()
- .url(httpURL+"/HttpWeb/LoginServlet")//请求的url
- .post(requestBody)
- .build();
- Call call = client.newCall(request);
- call.enqueue(new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- final String res = response.body().string();
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- resultTV.setText(res);
- Log.v("Main.ID=",res);
- if (!res.equals(null)){
- Toast.makeText(Main.this,"登陆成功",Toast.LENGTH_SHORT).show();
- user.setId(res);
- Intent intent = new Intent();
- intent.setClass(Main.this,MainActivity.class);//跳转到加载界面
- Bundle bundle = new Bundle();
- bundle.putParcelable("user", user);
- intent.putExtras(bundle);
- startActivity(intent);
- }else{
- Toast.makeText(Main.this,"登陆失败",Toast.LENGTH_SHORT).show();
- }
- }
- });
- }
- });
- }
User表,其中实现接口Parcelable是为了让bundle可以传递这个对象,使用bundle.putParcelable()这个办法
[html] view plain copy
- import android.os.Parcel;
- import android.os.Parcelable;
- import java.io.Serializable;
- /**
- * Created by acer1 on 2018/4/5.
- */
- public class User implements Parcelable,Serializable{
- private String id;
- private String username;
- private String password;
- private String Nickname;
- private String Individuality_signature;
- public User(Parcel in) {
- id = in.readString();
- username = in.readString();
- password = in.readString();
- }
- public static final Creator<User> CREATOR = new Creator<User>() {
- @Override
- public User createFromParcel(Parcel in) {
- return new User(in);
- }
- @Override
- public User[] newArray(int size) {
- return new User[size];
- }
- };
- public User() {
- }
- public String getNickname() {
- return Nickname;
- }
- public void setNickname(String nickname) {
- Nickname = nickname;
- }
- public String getIndividuality_signature() {
- return Individuality_signature;
- }
- public void setIndividuality_signature(String individuality_signature) {
- Individuality_signature = individuality_signature;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public int describeContents() {
- return 0;
- }
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(id);
- dest.writeString(username);
- dest.writeString(password);
- }
- }
现在客户端基本就完事了,下面是服务器的代码,我开始学的时候就主要想学怎么接收json格式的数据,我相信大家也是想学怎么接收json数据格式的数据,通过gson将接收的数据解析成对象,看代码。我们还要在服务器里面写一个javabean,让json数据映射成这个javabean,方便提取数据
首先我们导入一些包,让我们可以接收到json数据
[html] view plain copy
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- response.setContentType("application/json");
- response.setCharacterEncoding("UTF-8");
- request.setCharacterEncoding("UTF-8");
- /**
- * 接收json
- */
- BufferedReader reader = request.getReader();
- String json = reader.readLine();
- System.out.println(json);
- Gson gson =new Gson();
- User user = gson.fromJson(json, User.class);
- System.out.println(user.getUsername());
- System.out.println(user.getPassword());
- PrintWriter out = response.getWriter();
- Integer msg;
- try {
- msg = UserDao.selectUser(user);
- out.print(msg);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- reader.close();
- }
其中提取json数据和解析的代码就是下面这段代码
[html] view plain copy
- response.setContentType("application/json");
- response.setCharacterEncoding("UTF-8");
- request.setCharacterEncoding("UTF-8");
- /**
- * 接收json
- */
- BufferedReader reader = request.getReader();
- String json = reader.readLine();
- System.out.println(json);
- Gson gson =new Gson();
- User user = gson.fromJson(json, User.class);
- System.out.println(user.getUsername());
- System.out.println(user.getPassword());
然后就是服务器端的javabean
[html] view plain copy
- public class User {
- private String id;
- private String username;
- private String password;
- private String Nickname;
- private String Individuality_signature;
- public String getNickname() {
- return Nickname;
- }
- public void setNickname(String nickname) {
- Nickname = nickname;
- }
- public String getIndividuality_signature() {
- return Individuality_signature;
- }
- public void setIndividuality_signature(String individuality_signature) {
- Individuality_signature = individuality_signature;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
到这里基本的过程就结束了,从安卓端上传json数据到服务器端解析json数据,将json数据解析成javabean对象。不知道对初学者有没有帮助,又不懂的可以直接@我,
猜你喜欢
- 2024-09-28 我放弃了okhttp、httpClient,选了这个神仙工具
- 2024-09-28 很懵圈,记录一次MinIO 使用okhttp版本的问题?
- 2024-09-28 android学习,OkHttp,拦截器(okhttp自定义拦截器放在哪一层)
- 2024-09-28 Okhttp上传图片失败,居然是服务端的锅?(一)
- 2024-09-28 工作日报 2021.10.20 OkHttp3错误异常:unexpected end of stream
- 2024-09-28 深入浅出 OkHttp 源码解析及应用实践
- 2024-09-28 用OkHttp实现WebSocket长连接(利用输入实现预期结果的相互关联或者相作用的一组活动 描述的是)
- 2024-09-28 干货-okHttp的优点-收藏了(水瓶座女的缺点和优点)
- 2024-09-28 软件更新丨OkHttp 4.0.0 RC 3 发布,从 Java 切换到 Kotlin
- 2024-09-28 开发者必备的Android开发资源之OkHttp
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)