12

この URL から単純な HTTP 応答を取得しようとしています: http://realtorsipad.demowebsiteonline.net/eventsfeed.php

しかし驚くべきことに、別の HTML ページを返すのではなく、予想される XML 応答を返しません!

何が問題なのか理解できません。

サンプル アクティビティは次のとおりです。

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;
    }
}
4

1 に答える 1

7

それ自体はコードではなく、サイトであり、リクエストがモバイル ユーザー エージェントで行われると、多くのリダイレクトで応答します。

デスクトップ ブラウザーを複製するには、ユーザー エージェント文字列を変更します。そのようです:

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;
}
于 2013-06-15T07:23:56.603 に答える