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无用
悬赏问题
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog
- ¥15 Excel发现不可读取的内容