【问题标题】:Send POST request with httpPost from Spring Boot to Python flask api使用 httpPost 从 Spring Boot 向 Python flask api 发送 POST 请求
【发布时间】:2021-10-03 09:44:22
【问题描述】:

我想向我的 Python 烧瓶 api 发送一个整数数组。我在我的另一个后端 api (Spring Boot) 中编写了这段代码。我从来没有做过这样的事情,所以我不知道如何使用 httpPost 和 CloseableHttpClient 传递 int[] 参数。 我的代码如下:

@PostMapping("/result")
    public String getTestResult(@RequestBody Map<String,String> list) throws ClientProtocolException, IOException {
        int[] answers = resultService.saveOrUpdate(list);
        String stuid = list.get("0");
        Optional<Student_Dim> student = studentService.getStudentInformation(Long.parseLong(stuid));
        Optional<Location_Dim> location = locationService.getLocation(student.get().getLoc_code());
        int[] allData = {answers[0],answers[1],answers[2],answers[3],answers[4],
                         answers[5],answers[6],answers[7],answers[8],answers[9],
                         answers[10],answers[11],answers[12],answers[13],answers[14],
                         answers[15],answers[16],answers[17],answers[18],answers[19],
                         student.get().getAge(),
                         location.get().getDensity(),
                         (int) location.get().getAverage_temp(),
                         location.get().getInvidualism_score()};
        HashMap<String,int[]> mlData = new HashMap<String,int[]>();
        mlData.put("data",allData);
        CloseableHttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost("http://127.0.0.1:5000/personality");
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("data", allData));
        CloseableHttpResponse response = client.execute(httpPost);
        String responseString = new BasicResponseHandler().handleResponse(response);
        System.out.println(responseString);
        client.close();
        //resultService.insertPersonality(stuid);
        String personality = studentService.getPersonality(Long.parseLong(stuid));
        return personality;
    }

这段代码的重要部分发生在 int[] allData 之后。你可以看到我试过了

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("data", allData));

但它说您不能将 String, int[] 传递给 BasicNameValuePair。 我把代码的请求部分贴上来说明清楚:

CloseableHttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost("http://127.0.0.1:5000/personality");
        //List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        //nameValuePairs.add(new BasicNameValuePair("data", allData));
        CloseableHttpResponse response = client.execute(httpPost);
        String responseString = new BasicResponseHandler().handleResponse(response);
        System.out.println(responseString);
        client.close();

【问题讨论】:

    标签: python java spring-boot http-post httprequest


    【解决方案1】:

    不是最好的解决方案,但我设法将所有整数发送到我的烧瓶 api。我将其转换为字符串,然后发送它,并在 Python 代码中将其转换回 int。

    HttpResponse response = Request.Post("http://127.0.0.1:5000/personality").bodyForm(
                      Form.form().add("answ1",Integer.toString(answers[0])).add("answ1",Integer.toString(answers[0]))
                      .add("answ0",Integer.toString(answers[0])).add("answ1",Integer.toString(answers[1]))
                      .add("answ2",Integer.toString(answers[2])).add("answ3",Integer.toString(answers[3]))
                      .add("answ4",Integer.toString(answers[4])).add("answ5",Integer.toString(answers[5]))
                      .add("answ6",Integer.toString(answers[6])).add("answ7",Integer.toString(answers[7]))
                      .add("answ8",Integer.toString(answers[8])).add("answ9",Integer.toString(answers[9]))
                      .add("answ10",Integer.toString(answers[10])).add("answ11",Integer.toString(answers[11]))
                      .add("answ12",Integer.toString(answers[12])).add("answ13",Integer.toString(answers[13]))
                      .add("answ14",Integer.toString(answers[14])).add("answ15",Integer.toString(answers[15]))
                      .add("answ16",Integer.toString(answers[16])).add("answ17",Integer.toString(answers[17]))
                      .add("answ18",Integer.toString(answers[18])).add("answ19",Integer.toString(answers[19]))
                      .add("age",Integer.toString(student.get().getAge()))
                      .add("gender",Integer.toString(student.get().getGender()))
                      .add("density",Integer.toString(location.get().getDensity()))
                      .add("avg_temp",Integer.toString((int) location.get().getAverage_temp()))
                      .add("invi_score",Integer.toString(location.get().getInvidualism_score()))
                      .add("gp_avg",Integer.toString((int)student.get().getGp_avg()))
                      .build())
                      .execute().returnResponse();
    

    在 Python 中

    answ1 = int(request.form.get('answ0'))
      answ2 = int(request.form.get('answ1'))
      answ3 = int(request.form.get('answ2'))
      answ4 = int(request.form.get('answ3'))
      answ5 = int(request.form.get('answ4'))
      answ6 = int(request.form.get('answ5'))
      answ7 = int(request.form.get('answ6'))
      answ8 = int(request.form.get('answ7'))
      answ9 = int(request.form.get('answ8'))
      answ10 = int(request.form.get('answ9'))
      answ11 = int(request.form.get('answ10'))
      answ12 = int(request.form.get('answ11'))
      answ13 = int(request.form.get('answ12'))
      answ14 = int(request.form.get('answ13'))
      answ15 = int(request.form.get('answ14'))
      answ16 = int(request.form.get('answ15'))
      answ17 = int(request.form.get('answ16'))
      answ18 = int(request.form.get('answ17'))
      answ19 = int(request.form.get('answ18'))
      answ20 = int(request.form.get('answ19'))
      age = int(request.form.get('age'))
      gender = int(request.form.get('gender'))
      density = int(request.form.get('density'))
      avg_temp = int(request.form.get('avg_temp'))
      individualism_score = int(request.form.get('invi_score'))
      gp_avg = int(request.form.get('gp_avg'))
    

    如果您有更好的解决方案,请与我分享!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 2017-10-16
      • 2019-10-19
      • 2018-07-05
      • 2023-03-14
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多