【问题标题】:Mule HTTP endpoint with parameters带参数的 Mule HTTP 端点
【发布时间】:2014-11-27 21:49:35
【问题描述】:

我正在尝试编写一个 Mule 流来轮询 CRUD-web 服务。我已经设法用一个小型 JAVA 应用程序完成了我想做的事情,但如果可能的话,我想在 mule 流中使用 HTTP 端点。

我想在 HTTP-HEADER 中使用数据库 ID 执行 HTTP-GET 请求。这可以通过 MULE-inbound-endpoint 实现吗?

    // HTTP GET request
private void sendGet() throws Exception {


    String url = "https://XXXXXXXXXXXXXXXXXXXXXXXXXX";

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    // optional default is GET
    con.setRequestMethod("GET");
    con.setRequestProperty("X-Appery-Database-Id", "XXXXXXXXXXXXXXXXXX");

    //add request header
    con.setRequestProperty("User-Agent", USER_AGENT);

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'GET' request to URL : " + url);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    //print result
    System.out.println(response.toString());

【问题讨论】:

    标签: http mule httpurlconnection


    【解决方案1】:

    您可以使用 MuleClient 执行一组测试(CRUD 操作),例如:

    MuleClient client = muleContext.getClient();
    Map parameters = new HashMap();
    parameters.put("Content-Type", "application/json");
    parameters.put("http.method", "GET");     // or POST, DELETE, PUT
    parameters.put("DatabaseID", "ID");
    

    然后发送到 http-inbound-endpoint

    MuleMessage response = client.send("http://localhost:8091/rest/domain", PAYLOAD, parameters);
    assertNotNull(response);
    assertThat(Integer.valueOf(response.getInboundProperty(HTTP_STATUS).toString()), is(200));
    

    Victor 向您展示了如何从流程中做到这一点。希望能帮到你。

    【讨论】:

      【解决方案2】:

      以下是可能的:

          <poll>
              <http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" method="GET">
                  <set-property propertyName="X-Appery-Database-Id" value="XXXXXXXXXXXXXXXXXX" />
                  <set-property propertyName="User-Agent" value="MY_USER_AGENT" />        
              </http:outbound-endpoint>
          </poll>
      

      会生成这样的请求:

      GET / HTTP/1.1
      X-MULE_ENDPOINT: http://localhost:8081
      X-Appery-Database-Id: XXXXXXXXXXXXXXXXXX
      X-MULE_ROOT_MESSAGE_ID: 8c80b9f0-7682-11e4-94ea-12a3ae03ce3a
      User-Agent: MY_USER_AGENT
      X-MULE_SESSION: rO0ABXNyACNvcmcubXVsZS5zZXNzaW9uLkRlZmF1bHRNdWxlU2Vzc2lvbi7rdtEW7GGKAwAFWgAFdmFsaWRMAA1mbG93Q29uc3RydWN0dAAmTG9yZy9tdWxlL2FwaS9jb25zdHJ1Y3QvRmxvd0NvbnN0cnVjdDtMAAJpZHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACnByb3BlcnRpZXN0AA9MamF2YS91dGlsL01hcDtMAA9zZWN1cml0eUNvbnRleHR0ACdMb3JnL211bGUvYXBpL3NlY3VyaXR5L1NlY3VyaXR5Q29udGV4dDt4cAFwdAAkOGM4MGI5ZjEtNzY4Mi0xMWU0LTk0ZWEtMTJhM2FlMDNjZTNhc3IAJWphdmEudXRpbC5Db2xsZWN0aW9ucyRTeW5jaHJvbml6ZWRNYXAbc/kJS0s5ewMAAkwAAW1xAH4AA0wABW11dGV4dAASTGphdmEvbGFuZy9PYmplY3Q7eHBzcgAkb3JnLm11bGUudXRpbC5DYXNlSW5zZW5zaXRpdmVIYXNoTWFwndHZ72dFzgADAAB4cHcMP0AAAAAAABAAAAAAeHEAfgAJeHB4
      Host: localhost:8081
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-22
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 2016-03-02
        • 1970-01-01
        相关资源
        最近更新 更多