2012-07-02 290 views
1

我正在构建一个简单的android应用程序,该应用程序向此站点发送http post请求http://www.ap-ljubljana.si/vozni_red2/VR2.php,然后基于post请求获取适当的响应。问题是我的应用程序没有得到与浏览器相同的响应。任何想法为什么?Android http请求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

请确保您没有在UI线程中执行一个单独的线程这方面...。 –

+0

是的我知道我必须使用多线程,但这不是问题,因为我得到一个回应权?我如何使用cookie? – krneki

回答

0

还有就是cookie信息是从你的APP缺失request.May是创造issues.Some服务器端调试可以解决这个问题,我想。

0

我认为你没有打到确切的URL,因为你打的URL不是API, AFAIT, 因为这是指向它的网页URL。

在浏览器中,当您执行任务时,还有其他API链接正在执行任务,并且您可以获得正确的响应,因为网页的构建方式可以帮助您了解响应结果,但是当您在此链接上执行其实际返回的内容上面提到的php链接,而主要工作是由其他API链接完成的。

请让我知道如果我错了,所以我可以帮你。

+0

是的,我认为合适的URL应该是Referer中的URL,但是如果我使用那个,我根本不会得到任何回应。 – krneki

+0

是的,那是你需要通过的那个。另外,请确保您需要根据您收到的API文档,在您的请求中传递所有这些值,但不会更少,这可能会导致无效响应。尝试使用您当前的Referer URL作为主URL,并将您的ORIGIN和REFERER替换为:“http:// www.ap-ljubljana.si /”(删除空格)并确认结果。 – iabhi

+0

我做了你所说的,我实际上认为它正在工作(它只有当我打开我期望在浏览器中获得的页面,然后通过应用程序发送帖子时才起作用)。否则我再次得到错误的回应。 http://i47.tinypic.com/ws4s5w.jpg – krneki