10条回答 默认 最新
- niaonao 2018-08-21 02:42关注
HTTP请求发送JSON数据:
public class TransObjectToWeb { /** * 创建方法:将对象传输到 web 端 * @param user */ private Boolean flag = false; public boolean sendToWeb(User user){ try { // (1)服务器的访问路径 Log.i("TAG","创建连接"); URL url = new URL("http://192.168.0.28:8080/WinSockWeb/WinSockForAndroid"); HttpURLConnection http = (HttpURLConnection) url.openConnection(); //实例化连接对象 http.setDoInput(true); //可读可写 http.setDoOutput(true); http.setUseCaches(false); //不允许使用缓存 http.setRequestMethod("POST"); //设置传输方式为 post http.connect(); //创建连接 Log.i("TAG","创建连接成功"); // (2)数据写入流发送至服务器 OutputStream os = http.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); Log.i("TAG","创建json 对象"); JSONArray jsonArray = new JSONArray(); //创建 json 对象 JSONObject jsonObject = new JSONObject(); jsonObject.put("username",user.getUsername()); //写入对象数据 jsonObject.put("gender",user.getGender()); jsonObject.put("age",user.getAge()); jsonArray.put(jsonObject); bw.write(jsonArray.toString()); bw.flush(); // (3)数据读取流接收数据 InputStream is = http.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String result = br.readLine(); //获取web 端返回的数据 if (result.equals("succeed")) { //如果返回数据为 succeed 处理成功,否则失败 flag = true; } // (4)关闭相关流 if (os != null) os.close(); if (osw != null) osw.close(); if (is != null) is.close(); if (isr != null) isr.close(); if (br != null) br.close(); if (bw != null) bw.close(); } catch (Exception e){e.printStackTrace();} return flag; } }
接受并解析
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //设置编码方式 response.setCharacterEncoding("utf-8"); System.out.println("接收到请求"); User user = null; //初始化接收的传输对象为空 //(1) 获取android 请求,对传输对象的数据进行处理 InputStream is = request.getInputStream(); InputStreamReader isr = new InputStreamReader(is,"utf-8"); BufferedReader br = new BufferedReader(isr); String userjson = br.readLine(); System.out.println("userjson:"+userjson.toString()); //输出 json 格式数据 try { JSONArray userarr = new JSONArray(userjson); JSONObject userobj = userarr.getJSONObject(0); user = new User(); //实例化 user 对象,否则报空指针异常 user.setUsername(userobj.getString("username")); user.setGender(userobj.getString("gender")); user.setAge(userobj.getInt("age")); System.out.println("该传输对象:\n" +"姓名: "+user.getUsername() +"\n性别: "+user.getGender() +"\n年龄: "+user.getAge()); // (2)返回结果,成功或失败 OutputStream os = response.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os,"utf-8"); BufferedWriter bw = new BufferedWriter(osw); if (user != null) bw.write("succeed"); else bw.write("error"); bw.flush(); if (os != null) os.close(); if (osw != null) osw.close(); if (is != null) is.close(); if (isr != null) isr.close(); if (br != null) br.close(); if (bw != null) bw.close(); } catch (Exception e){e.printStackTrace();} }
解决 1无用
悬赏问题
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题