2012-07-02 4 views
1

Я создаю простое приложение для Android, которое отправляет HTTP-запрос на этот сайт http://www.ap-ljubljana.si/vozni_red2/VR2.php, а затем получает подходящий ответ на основе запроса на отправку. Проблема в том, что мое приложение не получает такой же ответ, как браузер. Любые идеи почему?Android http request POST

Java файл

`HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://www.ap-ljubljana.si/vozni_red2/VR3.php"); 

    try{ 

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("VSTOP_ID", "1")); 
     nameValuePairs.add(new BasicNameValuePair("IZSTOP_ID","1")); 
     nameValuePairs.add(new BasicNameValuePair("btnNext", "Naprej")); 

     httppost.setHeader("Cache-Control", "max-age=0"); 
     httppost.setHeader("Origin", "http://www.ap-ljubljana.si"); 
     httppost.setHeader("Referer", "http://www.ap-ljubljana.si/vozni_red2/VR2.php?DATUM="+datum+"&VSTOP_IME=Vstop...&IZSTOP_IME=Izstop..."); 
     httppost.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
     httppost.setHeader("DNT", "1"); 
     httppost.setHeader("Accept-Encoding", "gzip,deflate,sdch"); 
     httppost.setHeader("Accept-Language", "sl-SI,sl;q=0.8,en-GB;q=0.6,en;q=0.4"); 
     httppost.setHeader("Accept-Charset", "ISO-8859-2,utf-8;q=0.7,*;q=0.3"); 
     //httppost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8)); 

     return httpclient.execute(httppost); 

    } 
    catch (ClientProtocolException e){ 

     return null; 
    } 
    catch (IOException e){ 

     return null; 
    }` 

запрос HTTP POST Браузера

http://i45.tinypic.com/zvqww7.jpg

+0

HTTP POST запрос моего приложения в http://i45.tinypic.com/2poqh4y.jpg – krneki

+0

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

+0

да, я знаю, что мне нужно использовать многопоточность, но это не проблема, так как я получаю ответ правильно? как я могу использовать файлы cookie? – krneki

ответ

0

Там находится информация печенье отсутствует в APP request.May быть, создающее issues.Some стороне сервера отладки может решить этот выпуск, думаю.

0

Я думаю, что вы не нажимаете точный URL-адрес, поскольку URL-адреса, которые вы нажимаете, не являются API-интерфейсами, AFAIT, вызывают это URL-адрес веб-страницы, указывающий на него.

В браузере, когда вы это делаете, есть другие ссылки API, которые выполняют задачи, и вы получаете правильный ответ, поскольку веб-страницы построены так, чтобы помочь вам узнать результат ответа, но когда вы делаете по этой ссылке его фактическое возвращающее содержимое вышеупомянутые ссылки php, в то время как основная работа выполняется другими ссылками API.

Пожалуйста, дайте мне знать, если я ошибаюсь, поэтому я могу помочь вам.

+0

Да, я думаю, что подходящий URL-адрес должен быть таким, как тот, что есть в Referer, но я не получаю никакого ответа вообще, если я его использую. – krneki

+0

Да, именно это вам нужно пройти. Кроме того, убедитесь, что вам нужно передать все эти значения в свой запрос в соответствии с полученной вами документацией API, не более, что может оказаться нулевым ответом. Попробуйте использовать текущий URL-адрес Referer для основного URL-адреса и замените ORIGIN и REFERER следующим: «http: // www.ap-ljubljana.si /» (удалите пробелы) и подтвердите результат. – iabhi

+0

Я сделал то, что вы сказали, и я действительно думал, что он работает (он работает только, если я открою страницу, которую я ожидаю получить в своем браузере, а затем отправлю сообщение через приложение). В противном случае я снова получаю неправильный ответ. http://i47.tinypic.com/ws4s5w.jpg – krneki