2015-01-10 3 views
0

Я пытаюсь отправить запрос HTTP-сообщения в приложении Android.Андроид HTTP Запрос авторизации почты

Это то, что я должен послать: enter image description here enter image description here

Это то, что я должен получить:

enter image description here

Итак, в заключение, мне нужно, чтобы получить печенье из ответа и код ответа должно быть 302.

У меня есть Android-код:

private static String makePostRequest() { 

    HttpClient httpClient = new DefaultHttpClient(); 
          // replace with your url 
    HttpPost httpPost = new HttpPost("http://g1.botva.ru/login.php"); 

    boolean flag = httpClient.getParams().isParameterTrue(ClientPNames.HANDLE_REDIRECTS); 

    httpPost.addHeader("Accept", "*/*"); 
    httpPost.addHeader("Accept-Encoding", "gzip, deflate"); 
    //httpPost.addHeader("Content-Length", "83"); 
    httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded"); 
    httpPost.addHeader("User-Agent", "runscope/0.1"); 

    Header [] arr = httpPost.getAllHeaders(); 

    String result123 = ""; 
    //Post Data 
    List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(5); 

    nameValuePair.add(new BasicNameValuePair("do_cmd", "login")); 
    nameValuePair.add(new BasicNameValuePair("server", "1")); 
    nameValuePair.add(new BasicNameValuePair("email", "[email protected]")); 
    nameValuePair.add(new BasicNameValuePair("password", "avmalyutin1234")); 
    nameValuePair.add(new BasicNameValuePair("remember", "1")); 



    //Encoding POST data 
    try { 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
    } catch (UnsupportedEncodingException e) { 
     // log exception 
     e.printStackTrace(); 
    } 

    //making POST request. 
    try { 
     HttpResponse response = httpClient.execute(httpPost); 
     String getCookie = response.getHeaders("Pragma").length + ""; 
     result123 = response.getStatusLine().getStatusCode()+""; 
     // write response to log 
     Log.d("Http Post Response:", response.toString()); 
    } catch (ClientProtocolException e) { 
     // Log exception 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // Log exception 
     e.printStackTrace(); 
    } 

    return result123; 
} 

И я получаю код 200. И есть только PHPSESSIONID в Cookies, но других файлов cookie нет.

+0

Эй CodeMonkey, так как вы уже используете [Runscope] (https://www.runscope.com) - вы можете просмотреть [документации вокруг Android] (https: //www.runscope.com/docs/code-examples/android). Множество примеров из нескольких разных библиотек, а также советы о том, как передать запрос через свой собственный URL-адрес захвата, чтобы вы могли проверить вызов API, сделанный вашим клиентом Android, в Инспекторе трафика Runscope. – mansilladev

ответ

0

Добавление функции

con.setInstanceFollowRedirects(false); 

решить проблему и она перестает перенаправлении. А также я получил код 302 по желанию.

Спасибо всем за помощь

1

Вам понадобится инструмент DefaultHttpClient, чтобы вы могли видеть WIRE и HEADERS. Google log WIRE HEADERS для клиента, которого вы используете. Если вы не можете найти отладочную запись (вы можете рассмотреть DIFF client)

Затем сравните 2 фреймворка, выполняющих сообщение (ваш тестовый жгут VS android), просто сужая различия между отправками заголовков + POST BODY , Когда вы соберете андроид с вашим тестовым жгутом, андроид произведет тот же результат 302, который вы сообщите о получении из тестового жгута.

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