繁体   English   中英

为什么我得到的不同HttpResponse比android中的浏览器?

[英]Why I am getting different HttpResponse than browser in android?

我试图从这个URL获得简单的HTTP响应: http//realtorsipad.demowebsiteonline.net/eventsfeed.php

但令人惊讶的是,它没有返回预期的XML响应而是返回另一个HTML页面!

我无法理解什么是问题。

以下是示例活动:

public class MainActivity1 extends Activity {
    String parsingWebURL = "http://realtorsipad.demowebsiteonline.net/eventsfeed.php";
    String line = "";
    Document docXML;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        line = getXML();
        System.out.println(line);
    }

    // ------------------------------------------------
    public String getXML() {
        String strXML = "";
        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(parsingWebURL);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            strXML = EntityUtils.toString(httpEntity);
            return strXML;
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        return strXML;
    }
}

这不是您的代码本身,而是网站,当使用移动用户代理发出请求时,它会响应大量重定向。

要复制桌面浏览器,请更改用户代理字符串。 像这样:

public String getXML() {
    String strXML = "";
    try {

        final HttpParams params = new BasicHttpParams();
        HttpClientParams.setRedirecting(params, true);
        HttpClientParams.setCookiePolicy(params, CookiePolicy.BROWSER_COMPATIBILITY);

        DefaultHttpClient httpClient = new DefaultHttpClient(params);
        httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:23.0) Gecko/20131011 Firefox/23.0");

        HttpGet httpGet = new HttpGet(parsingWebURL);

        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        strXML = EntityUtils.toString(httpEntity);
        return strXML;
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    return strXML;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM