2013-08-09 1 views
0

Я пытаюсь построить URL, добавив некоторые параметры моей BASEURL: Проблема заключается в том, что параметры добавляются в беспорядке моего BASEURL, и символы, как é заменяются странные питания, как %C3%A9Wierd результаты при попытке построить URI для HttpGet

String BASEURI="myBaseUri"; 
void getParameters() 
{ 
    HashMap<String, String> map=new HashMap<String, String>();    
    final String login = ((EditText)alertDialogRegister.findViewById(R.id.regLogin)).getText().toString(); 
    final String password= ((EditText)alertDialogRegister.findViewById(R.id.regPassword)).getText().toString(); 
    final String passwordConfirm= ((EditText)alertDialogRegister.findViewById(R.id.regPasswordConfirm)).getText().toString(); 
    final String firstName= ((EditText)alertDialogRegister.findViewById(R.id.regPrenom)).getText().toString(); 
    final String lastName= ((EditText)alertDialogRegister.findViewById(R.id.regNom)).getText().toString(); 
     final String sexe=((RadioButton)alertDialogRegister.findViewById(((RadioGroup)alertDialogRegister.findViewById(R.id.regSexe)).getCheckedRadioButtonId())).getText().toString(); 
    final String email= ((EditText)alertDialogRegister.findViewById(R.id.regEmail)).getText().toString(); 
    final String telephone= ((EditText)alertDialogRegister.findViewById(R.id.regPhone)).getText().toString(); 
    final String adresse= ((EditText)alertDialogRegister.findViewById(R.id.regAddress)).getText().toString(); 
    final String civilite=((RadioButton)alertDialogRegister.findViewById(((RadioGroup)alertDialogRegister.findViewById(R.id.regCivilite)).getCheckedRadioButtonId())).getText().toString(); 
    map.put("rquest","addUser"); 
    map.put("login", login); 
    map.put("password", password); 
    map.put("firstname", firstName); 
    map.put("lastname", lastName); 
    map.put("sex", sexe); 
    map.put("situation", civilite); 
    map.put("email", email); 
    map.put("address", adresse); 
    registeruser(map); 

} 

public void registeruser(HashMap<String,String> map) 
    { 
     Uri.Builder builder = Uri.parse(BASEURI).buildUpon(); 
     builder.appendPath("api.php"); 
     for(Map.Entry<String, String> entry:map.entrySet()) 
     { 
     builder.appendQueryParameter(entry.getKey(),entry.getValue()); 
     } 
     Uri builtUri = builder.build(); 
     Log.i("Hossam", builtUri.toString()); 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(builder.toString()); 

     ResponseHandler<String> handler = new BasicResponseHandler(); 
     String result = null; 
     try { 
      result = httpclient.execute(request, handler); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     httpclient.getConnectionManager().shutdown(); 
     String tag = null; 
     //Log.i("http response", result); 
    } 

ответ

1

Вопрос заказа, потому что вы используете карту, и в Java Карты маркированные и несортированный тип коллекции, если вы не используете либо LinkedHashMap или TreeMap, которые стоят намного больше производительности, чем обычные Список, если вам нужен конкретный заказ, вы должны пойти на List, иначе Map всегда будет возвращать значения неупорядоченным способом и связан с специальными символами, потому что ваш URL-адрес содержит их, и по умолчанию URL-адрес соответствует его закодированному их версии, поскольку они могут быть только ASCII, вот список URL-кодированных символов ... http://www.degraeve.com/reference/urlencoding.php

+0

Да, я вижу, одна мелочь вам нужно изменить i n вы отвечаете перед тем, как я повышу/принимаю ваш ответ, 'LinkedHashMap' сохраняет порядок вставки. –

+0

Вы правы, только что отредактировали ответ ... –

1

Ваши персонажи é не принадлежат ASCII символьный набор.

URL-адреса могут содержать только набор символов ASCII. Поскольку URL-адреса часто содержат символы вне набора ASCII, URL-адрес должен быть преобразован в действительный формат ASCII.

URL-кодировка заменяет небезопасные символы ASCII символом «%», за которым следуют две шестнадцатеричные цифры. URL-адреса не могут содержать пробелы. Кодировка URL обычно заменяет пробел знаком +.

Источник: w3schools

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

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