简体   繁体   English

azure 逻辑应用程序请求触发器 url 在 RestTemplate java 中不起作用,但在 postman 中起作用

[英]azure logic app request trigger url is not working from RestTemplate java but working in postman

I have Azure logic app with request trigger.我有带有请求触发器的 Azure 逻辑应用程序。 I want to trigger this logic app from my java application.我想从我的 java 应用程序触发这个逻辑应用程序。 So, I am trying to call the request trigger url from my java API.所以,我试图从我的 java API 调用请求触发器 url。

It is working fine if i am hitting in postman, logic app with request trigger hitting via postman如果我输入 postman,它工作正常,逻辑应用程序通过 postman 触发请求触发

but getting 401 on calling it using RestTemplate in java.但是在 java 中使用 RestTemplate 调用它时得到 401。

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

@RestController
public class SampleController {
    @RequestMapping(value="/display",method = RequestMethod.GET)
    public ResponseEntity<String> display()
    {
        System.out.println("entered");
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://pt-38.northeurope.logic.azure.com/workflows/cc0363a3bf134efca43b0bd2d15d5ed5/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=HnllGcN9xo91kRGAjk";

        HttpHeaders headers = new HttpHeaders();
        headers.set("api-version", "2016-10-01");
        headers.set("sp", "%2Ftriggers%2Fmanual%2Frun");
        headers.set("sv", "1.0");
        headers.set("sig", "HnllGcN9xo91kRGAjk3Zlp6fW0dhwf");
        HttpEntity request = new HttpEntity(headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
//        JSONObject obj = new JSONObject(response.getBody());
//        System.out.println("obj");
        return response;
    }
}

logic app with request trigger accessing via rest template带有请求触发器的逻辑应用程序通过 rest 模板访问

As per Hury Shen suggestion i changed api code as below,根据 Hury Shen 的建议,我将 api 代码更改如下,

public HttpEntity<String> display1()
    {
        System.out.println("entered");
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://prod-38.northeurope.logic.azure.com/workflows/cc0363a3bf134efca43b0bd2d15d5ed5/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=HnllGcN9xo91kRGAjk3Zlp6fW0dhwfaRij-fk1CC60c";
        HttpHeaders headers = new HttpHeaders();
        headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
                .queryParam("api-version", "2016-10-01")
                .queryParam("sp", "%2Ftriggers%2Fmanual%2Frun")
                .queryParam("sv", "1.0")
                .queryParam("sig", "HnllGcN9xo91kRGAjk3Zlp6fW0dhwfaRij-fk1CC60c");
        HttpEntity<?> entity = new HttpEntity<>(headers);
        HttpEntity<String> response = restTemplate.exchange(
                builder.toUriString(),
                HttpMethod.GET,
                entity,
                String.class);
        return response;
    }

Getting below exception,低于异常, 邮递员例外

For this problem, we should put the value of api-version , sp , sv and sig in query parameters instead of put them in headers.对于这个问题,我们应该将api-versionspsvsig的值放在查询参数中,而不是放在 headers 中。

Do it like this:像这样做:

Map<String, String> params = new HashMap<String, String>();
params.put("api-version", "xxxx");
params.put("sp", "xxxxx");
params.put("sv", "xxx");
params.put("sig", "xxxxxxx");
.....
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class, params);

I have Azure logic app with request trigger.我有带有请求触发器的 Azure 逻辑应用程序。 I want to trigger this logic app from my java application.我想从我的 java 应用程序中触发这个逻辑应用程序。 So, I am trying to call the request trigger url from my java API.所以,我试图从我的 java API 调用请求触发器 url。

It is working fine if i am hitting in postman, logic app with request trigger hitting via postman如果我在 postman 中运行,它工作正常,请求触发器通过 postman 命中的逻辑应用程序

but getting 401 on calling it using RestTemplate in java.但是在 java 中使用 RestTemplate 调用它时得到 401。

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

@RestController
public class SampleController {
    @RequestMapping(value="/display",method = RequestMethod.GET)
    public ResponseEntity<String> display()
    {
        System.out.println("entered");
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://pt-38.northeurope.logic.azure.com/workflows/cc0363a3bf134efca43b0bd2d15d5ed5/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=HnllGcN9xo91kRGAjk";

        HttpHeaders headers = new HttpHeaders();
        headers.set("api-version", "2016-10-01");
        headers.set("sp", "%2Ftriggers%2Fmanual%2Frun");
        headers.set("sv", "1.0");
        headers.set("sig", "HnllGcN9xo91kRGAjk3Zlp6fW0dhwf");
        HttpEntity request = new HttpEntity(headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
//        JSONObject obj = new JSONObject(response.getBody());
//        System.out.println("obj");
        return response;
    }
}

logic app with request trigger accessing via rest template通过 rest 模板访问请求触发器的逻辑应用

As per Hury Shen suggestion i changed api code as below,根据 Hury Shen 的建议,我将 api 代码更改如下,

public HttpEntity<String> display1()
    {
        System.out.println("entered");
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://prod-38.northeurope.logic.azure.com/workflows/cc0363a3bf134efca43b0bd2d15d5ed5/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=HnllGcN9xo91kRGAjk3Zlp6fW0dhwfaRij-fk1CC60c";
        HttpHeaders headers = new HttpHeaders();
        headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
                .queryParam("api-version", "2016-10-01")
                .queryParam("sp", "%2Ftriggers%2Fmanual%2Frun")
                .queryParam("sv", "1.0")
                .queryParam("sig", "HnllGcN9xo91kRGAjk3Zlp6fW0dhwfaRij-fk1CC60c");
        HttpEntity<?> entity = new HttpEntity<>(headers);
        HttpEntity<String> response = restTemplate.exchange(
                builder.toUriString(),
                HttpMethod.GET,
                entity,
                String.class);
        return response;
    }

Getting below exception,低于异常, 邮递员的例外

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 来自 RestTemplate java 的 azure 逻辑应用程序的调用请求触发器 url - calling request trigger url of azure logic app from RestTemplate java Spring restTemplate 不适用于 URL 中的单引号。 与邮递员一起工作 - Spring restTemplate not working for single quotes in URL. Works with postman Azure 队列触发器不适用于 Java - Azure Queue trigger not working with Java 使用 Java 请求超时,但在 cURL 和 postman 上工作 - Request timeout with Java but working on cURL and postman 没有得到URL的排球响应,但在邮递员工作 - Not getting response from URL in volley but working in postman 相同的请求在Java Apache中超时,在邮递员中工作正常 - Identical request timing out in Java Apache, working fine in postman 404访问HTTPS URL时出错-Java,但可以与POSTMAN或SOAPUI一起正常使用 - 404 Error in accessing https URL - Java , but working fine with POSTMAN or SOAPUI Spring RestTemplate POST请求不适用于HttpEntity <String> - Spring RestTemplate POST request is not working with HttpEntity<String> RestTemplate 请求中的连接超时无法正常工作 - Connection Timeout in request with RestTemplate is not working correctly XMLHttpRequest 从 java 脚本调用时返回错误请求 (400),如果我从 Java 或 Postman 客户端调用它工作正常 - XMLHttpRequest Returning Bad Request (400) while calling from java script , if i am calling from Java or Postman client it working fine
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM