Как преобразовать карту в строку запроса URL?

Я не вижу вашего EmployeesComponent в вашем списке объявлений. EmployeesComponent нужно объявить в том же модуле, в котором вы импортируете MatCardModule, например:

declarations: [
    EmployeesComponent
],
imports: [
    MatCardModule
]

Я предполагаю, что вы либо забыли объявить EmployeesComponent в модуле приложения, либо у вас есть другой модуль, возможно, модуль «Сотрудники», куда вы должны импортировать MatCardModule.

66
задан Jean-François Fabre 22 June 2019 в 20:34
поделиться

3 ответа

Самым надежным из имеющихся в наличии является класс URLEncodedUtils из Apache Http Compoments (HttpClient 4.0).

Метод URLEncodedUtils.format () - это то, что вам нужно.

Он не использует карту, поэтому вы можете иметь повторяющиеся имена параметров, например,

  a=1&a=2&b=3

Не то чтобы я рекомендовал использовать такой вид имен параметров.

61
ответ дан 24 November 2019 в 14:49
поделиться

Я думаю, что это лучше для использования памяти и производительности, и я хочу отправить просто имя свойства, когда значение является нулевым.

public static String toUrlEncode(Map<String, Object> map) {
    StringBuilder sb = new StringBuilder();
    map.entrySet().stream()
            .forEach(entry
                    -> (entry.getValue() == null
                    ? sb.append(entry.getKey())
                    : sb.append(entry.getKey())
                            .append('=')
                            .append(URLEncoder.encode(entry.getValue().toString(), StandardCharsets.UTF_8)))
                    .append('&')
            );
    sb.delete(sb.length() - 1, sb.length());
    return sb.toString();
}
1
ответ дан 24 November 2019 в 14:49
поделиться

Вот кое-что, что я быстро написал; Я уверен, что это можно улучшить.

import java.util.*;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class MapQuery {
    static String urlEncodeUTF8(String s) {
        try {
            return URLEncoder.encode(s, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new UnsupportedOperationException(e);
        }
    }
    static String urlEncodeUTF8(Map<?,?> map) {
        StringBuilder sb = new StringBuilder();
        for (Map.Entry<?,?> entry : map.entrySet()) {
            if (sb.length() > 0) {
                sb.append("&");
            }
            sb.append(String.format("%s=%s",
                urlEncodeUTF8(entry.getKey().toString()),
                urlEncodeUTF8(entry.getValue().toString())
            ));
        }
        return sb.toString();       
    }
    public static void main(String[] args) {
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("p1", 12);
        map.put("p2", "cat");
        map.put("p3", "a & b");         
        System.out.println(urlEncodeUTF8(map));
        // prints "p3=a+%26+b&p2=cat&p1=12"
    }
}
40
ответ дан 24 November 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: