2016-10-27 7 views
0

У меня естьперебрать параметры для запроса

Map<String,String> params = ..... 

с ключом + значения для параметров запроса GET.

Построение HTTPUrl выглядит примерно так:

HttpUrl httpUrl = new HttpUrl.Builder() 
       .scheme("https") 
       .host("example.com") 
       .addEncodedPathSegment("path") 
       .addQueryParameter("name","John Doe") 
       .build(); 

как я добавляю (заранее неизвестно и/или переменной) параметров в params к HTTPUrl, т.е. перебирать значения в params и вызвать для каждый ключ + значение?

EDIT жаль, что я не был достаточно конкретен: Мне нужно знать, если я могу назвать .addQueryParameter() неоднократно внутри цикла так или иначе, не как перебрать карту.

ответ

0

Для того, чтобы работать, нужно начать с HttpUrl.builder:

HttpUrl.Builder httpUrlBuilder = new HttpUrl.Builder() 
       .scheme("https") 
       .host("example.com"); 

с последующим добавлением параметров:

for (Map.Entry<String,String> entry: params.entrySet()) { 
      httpUrlBuilder.addQueryParameter(entry.getKey(), entry.getValue()); 
} 

и, наконец, строить запрос:

HttpUrl httpUrl = httpUrlBuilder.build(); 
Request request = new Request.Builder() 
       .url(httpUrl) 
       .get() 
       .build(); 
1
Map<String,String> params = new HashMap<>(); 
params.put("p1","a"); 
params.put("p2","b"); 
params.put("p3","c"); 

Вы можете использовать:

paramString = urlEncodeUTF8(params) 

Он вернется "p1 = а & p2 = Ь & p3 = с". Вы добавляете его в базу своего URL-адреса.

url = "https//example.com?" + paramString 
+0

Где именно "urlEncodeUTF8"? – CoXier

+0

urlEncoreUTF8 содержится в java.net.URLEncoder. Также, если вы работаете в Eclipse, вы можете набрать Ctrl + Shift + o, чтобы автоматически импортировать отсутствующие librairies. – L01c

2

Если вы хотите перебрать свой Params карту, вы можете сделать это так:

Map<String, String> params = ..... 
for (Map.Entry<String, String> entry : params.entrySet()) 
{ 
    httpUrl.addQueryParameter(entry.getKey(),entry.getValue()); 

} 
+0

Это будет работать, только если вы начинаете с 'HttpUrl.Builder httpUrl = new HttpUrl.Builder() .scheme (" https ") .host (" example.com ");' – FelixHJ

2

См HttpUrl Javadoc примеры.

HttpUrl url = HttpUrl.parse("https://twitter.com/search?q=cute%20%23puppies&f=images"); 
for (int i = 0, size = url.querySize(); i < size; i++) { 
    System.out.println(url.queryParameterName(i) + ": " + url.queryParameterValue(i)); 
} 
+0

Очень полезно, но мне нужно идти другой путь _from_ params _to_ полный URL – FelixHJ

+1

'OkHttpUrl.Builder' позволит вам это сделать. –

 Смежные вопросы

  • Нет связанных вопросов^_^