java中关于在后端调用别人接口

2022/4/24 22:12:57

本文主要是介绍java中关于在后端调用别人接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前几天弄的一个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

 



这篇关于java中关于在后端调用别人接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程