前几天弄的一个web项目需要请求我同学写的一个算法模型接口,然后得到他返回的json数据,根据网上资料自己写了一段代码,写的可能比较繁杂,没有简化。
请求第3方接口代码,可根据自己需求更改:
//上传图片,图片检测 //去请求第三方的接口http://127.0.0.1:8000/detect public static String sendHttpRequest(String httpURL, String placeId) throws Exception { //placeid是请求参数,httpURL是请求路径,拼接它 String httpurl=httpURL+placeId; //建立URL连接对象 URL url = new URL(httpurl); //创建连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置请求的方式(需要是大写的) conn.setRequestMethod("POST"); //设置需要输出 conn.setDoOutput(true); // conn.addRequestProperty("Cookie", "JSESSIONID=" + jesssionId); //发送请求到服务器 conn.connect(); conn.getInputStream(); // 获得返回json的内容,utf-8获取内容的编码 InputStreamReader in = new InputStreamReader(conn.getInputStream(),"utf-8"); BufferedReader buffer = new BufferedReader(in); //StringBuilder来把接收到的数据拼接起来 StringBuilder result = new StringBuilder(); //逐行读取数据 String line;//用来读取数据 while ((line = buffer.readLine()) != null) { result.append(line); // System.out.print(line); } //关闭连接 in.close(); conn.disconnect(); //返回json字符串 return result.toString(); }View Code
对json数据的处理就看自己需求了,我的这个可能比较笨,性能不行,但也可成功添加数据到数据库
//模型检测json返回数据添加,str是json,filename文件名是存入数据库的标识,only_file是文件唯一标识符 public void addresult(String str,String filename,String only_file){ //将json中格式转义"\"变成空 String value_review = str.replace("\\",""); String value_red=value_review.replace("\"\"",""); //待解析的JSON字符串 String JSONString = value_red; //实体类对象 Lpian lpian=new Lpian(); String u_id=filename; //获取当前时间 Date times=new Date(); try { org.json.JSONObject JSON = new org.json.JSONObject(JSONString); // 第一步,将string变为JSON 这里最外层是{ 所以是new JSONObject /* * 属性中既有中括号包括,又嵌套了大括号,一层层获取即可 先getJSONArray,然后getJSONObject,到了属性,就是getXxx()了 */ JSONArray result= JSON.getJSONArray("result"); //json中的有个key是len int len=JSON.getInt("len"); if(len==0){ lpian.setClass_name(null); lpian.setscore(null); lpian.setXmin(null); lpian.setYmin(null); lpian.setXmax(null); lpian.setYmax(null); lpian.setLen(null); lpian.setU_id(u_id); lpian.setTimes(times); lpian.setonly_file(only_file); vueservice.save1(lpian); }else { // System.out.println("结果:"); //将json中数据提取出来存入数据库,过程麻烦,因为要转类型,可能有更好的方法,但现在只会这个 for (int i = 0; i < result.length(); i++) { //获取json数据中的各个值 JSONObject honor = result.getJSONObject(i); String class_name = (String) honor.getString("class_name"); Double score = honor.getDouble("score"); String score1 = String.valueOf(score); Double xmin = honor.getDouble("xmin"); String xmin1 = String.valueOf(xmin); Double ymin = honor.getDouble("ymin"); String ymin1 = String.valueOf(ymin); Double xmax = honor.getDouble("xmax"); String xmax1 = String.valueOf(xmax); Double ymax = honor.getDouble("ymax"); String ymax1 = String.valueOf(ymax); //添加数据库 lpian.setClass_name(class_name); lpian.setscore(score1); lpian.setXmin(xmin1); lpian.setYmin(ymin1); lpian.setXmax(xmax1); lpian.setYmax(ymax1); lpian.setLen(len); lpian.setU_id(u_id); lpian.setTimes(times); lpian.setonly_file(only_file); vueservice.save1(lpian); // System.out.println(class_name + " : " + score + ":" + xmin + ":" + ymin + ":" + xmax + ":" + ymax); } } }catch(Exception e) { System.out.println(e.getMessage()); } }View Code