Как получить строку запроса для URL с помощью httpUrlConnection, Android - PullRequest
0 голосов
/ 27 марта 2011

Я использую HttpUrlConnection для публикации запроса на веб-странице.Веб-страница принимает мой запрос и делает еще одну публикацию.Например: www.unknown.com

URL url = new URL("http://www.unknown.com"); //$NON-NLS-1$
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(15*1000);
urlConnection.setDoInput(true);
urlConnection.setDoOutput (true);
urlConnection.setUseCaches (false);
urlConnection.setAllowUserInteraction(true);
out = new OutputStreamWriter(urlConnection.getOutputStream());
string content = "var1=5&var2=0&var3=6"; //$NON-NLS-1$
out.write(content);
out.flush();
out.close();

Код работает без проблем, и я получаю HTML-код.Проблема в том, что веб-страница обрабатывает другой HTTP-метод «POST», когда он принимает мой запрос.Например, после моего запроса URI: http://www.unknown.com? Var1 = 5 & var2 = 0 & var3 = 6 & var4 = 1500

Мне нужно получить значение "var4" в моем коде, и я могуне найти никакого решения для этого.HttpUrlConnection.getUrl () возвращает только адрес http://www.unknown.com! У кого-нибудь есть предложения?Спасибо.

1 Ответ

1 голос
/ 27 марта 2011

Как насчет использования getQuery () для получения строки запроса.

String query = url.getQuery();

Это даст вам часть запроса этого URL.

Используйте StringTokenizer для разделения параметров. (Вам придется применить StringTokenizer дважды.)

Сначала получите токены из строки запроса, разделенные символом «&». Это вернет "val1 = 5", "val4 = 1500" и т. Д.

К указанным токенам примените StrinTokenizer еще раз. На этот раз получить токены, разделенные знаком "=". Теперь выполните итерации, первый токен будет именем параметра «val4», второй токен будет значением «1500».

StringTokenizer st = new StringTokenizer(query,"&",false); //query  is from getQuery()
while (st.hasMoreElements()) 
{   // First Pass to retrive the "parametername=value" combo

    String paramValueToken = st.nextElement().toString();

    StringTokenizer stParamVal = new StringTokenizer(paramValueToken, "=", false );

     int i = 0;
     while (stParamVal.hasMoreElements()) 
     {
        //Second pass to separate the "paramname" and "value".
        // 1st token is param name
        // 2nd token is param value


        String separatedToken = stParamVal.nextElement().toString();

        if( i== 0)
        {
            //This indicates that it is the param name : ex val4,val5 etc
            String paramName = separatedToken;
        }
        else 
        {
            // This will hold value of the parameter
            String paramValue = separatedToken;
        }
        i++;
     }
}

URL API API getQuery ()

http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html

...