Запрос Mirth HTTP POST с параметрами с использованием Javascript - PullRequest
0 голосов
/ 07 мая 2020

Следующий код от @Nick Rupley работает хорошо, но мне также нужно передать параметры как POST. Как мы передаем параметры POST? from java. net .URL

var url = new java.net.URL('http://localhost/myphpscript.php');
var conn = url.openConnection();
var is = conn.getInputStream();
try {
    var result = org.apache.commons.io.IOUtils.toString(is, 'UTF-8');
} finally {
    is.close();
}

2 Передаваемые параметры: firstname = "John" и lastname = "Smith"

Спасибо

Ответы [ 2 ]

1 голос
/ 12 мая 2020

Это будет POST с типом MIME application/x-www-form-urlencoded. Он использует apache httpclient, который уже включен в mirth, так как он используется внутри коннектора HTTP Sender, а также некоторые другие функции. Другие решения могут потребовать от вас загрузки jar-файлов и добавления ресурсов библиотеки.

Closer является частью Google Guava, который также уже включен в Mirth.

Проверьте комментарии, где Rhino javascript позволяет упростить сравнение кода с прямым преобразованием Java.

Было бы неплохо обернуть все это в функцию шаблона кода.

var result;

// Using block level Java class imports
with (JavaImporter(
    org.apache.commons.io.IOUtils,
    org.apache.http.client.methods.HttpPost,
    org.apache.http.client.entity.UrlEncodedFormEntity,
    org.apache.http.impl.client.HttpClients,
    org.apache.http.message.BasicNameValuePair,
    com.google.common.io.Closer))
{
    var closer = Closer.create();
    try {
        var httpclient = closer.register(HttpClients.createDefault());
        var httpPost = new HttpPost('http://localhost:9919/myphpscript.php');
        // javascript array as java List
        var postParameters = [
            new BasicNameValuePair("firstname", "John"),
            new BasicNameValuePair("lastname", "Smith")
        ];

        // Rhino JavaBean access to set property
        // Same as httpPost.setEntity(new UrlEncodedFormEntity(postParameters, "UTF-8"));
        httpPost.entity = new UrlEncodedFormEntity(postParameters, "UTF-8");

        var response = closer.register(httpclient.execute(httpPost));
        // Rhino JavaBean access to get properties
        // Same as var is = response.getEntity().getContent();
        var is = closer.register(response.entity.content);
        result = IOUtils.toString(is, 'UTF-8');
    } finally {
        closer.close();
    }
}
logger.info(result);
0 голосов
/ 10 мая 2020

Существует множество библиотек, которые могут помочь вам в построении URI в Java. Вы можете найти их ниже. Но если вы хотите остаться в Javascript, просто добавьте свои параметры вручную, чем создайте его.

function addParam(uri, appendQuery) {
    if (appendQuery != null) {
        uri += "?" + appendQuery;
    }
    return uri;
}

var newUri = addParam('http://localhost/myphpscript.php', 'firstname="John"');
var url = new java.net.URL(newUri);

Java EE 7

import javax.ws.rs.core.UriBuilder;
...
return UriBuilder.fromUri(url).queryParam(key, value).build();

org. apache .httpcomponents: httpclient: 4.5.2

import org.apache.http.client.utils.URIBuilder;
...
return new URIBuilder(url).addParameter(key, value).build();

org.springframework: spring-web: 4.2.5. ВЫПУСК

import org.springframework.web.util.UriComponentsBuilder;
...
return UriComponentsBuilder.fromUriString(url).queryParam(key, value).build().toUri();

...