用webView来加载。
以获取最终的url。

解决方案 »

  1.   

    "这个网页里的新闻是js获取的"那就看看js请求的地址和参数.............
      

  2.   

    http://news.nepu.edu.cn/dwr/call/plaincall/portalAjax.getNewsXml.dwr目测是这个地址.ajax请求的时候要带些参数
    如果实现dwr框架的话,应该好弄用3楼的办法也比较靠谱.不过那就要熟悉webview了
      

  3.   

    直接用java.net.UrlConnection去获取/**
         * 根据url获得页面源码, 调用web接口
         * @param url 访问地址, 必备参数
         * @param method 请求方式post还是get, 默认get
         * @param params 参数列表 post必备, 比如:"name=张三&age=18"
         * @param sessionInfo 可以保持session, 默认不保持
         * @param encoding 编码格式, 默认UTF_8
         * @param isLine 得到的源码是否换行, 默认false
         * @return
         */
    public String sound(String url, String method, String params, String sessionInfo, String encoding, boolean isLine) throws Exception {
    Log.e("AbstractActivity", "调用web接口:" + url);
    encoding = (isBlank(encoding) ? HTTP.UTF_8 : encoding);
    method = (isBlank(method) ? Domain.REQUEST_GET : method.toUpperCase());
    String mathStr = "mathRandom=" + Math.random();
    if (method.equals(Domain.REQUEST_GET)) {url += (url.indexOf("?") != -1 ? "&" : "?") + mathStr;}
    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
    if (!isBlank(sessionInfo)) {conn.setRequestProperty("Cookie", sessionInfo);}
    conn.setRequestMethod(method);
    if (requestTime > 0) {
    conn.setConnectTimeout(requestTime);
    conn.setReadTimeout(requestTime);
    }
    if (method.equals(Domain.REQUEST_POST)) {
    conn.setDoOutput(true);
    OutputStream output = conn.getOutputStream(); 
    output.write((isBlank(params) ? mathStr : params + "&" + mathStr).getBytes(encoding)); 
    output.flush();output.close();
    }
    String response = FileUtil.get().readFile(conn.getInputStream(), encoding, 1, isLine);
    conn.disconnect();
    requestTime = Domain.LONG_REQUEST_TIME;
    return response;
    }用webview去获取也行:
    /**
     * 内嵌浏览器的util
     * @author TCK-001
     * @version 1.0
     */
    public final class BrowserUtil {

    private BrowserUtil() {}
    private static BrowserUtil bean = new BrowserUtil();
    private WebView webView;
    private String showSourceMethod;
    private Map<String, Object> urlGressMsg;
    private ProgressDialog gressDialog;

    /**
     * 单例模式获得bean
     * @param webView 浏览器对象
     * @param showSourceMethod 显示源码的方法,可以为null
     * @param urlGressMsg 加载网页显示进度条的内容
     * @return
     */
    public static BrowserUtil get(WebView webView, String showSourceMethod, Map<String, Object> urlGressMsg) {
    if (null == webView) {
    throw new RuntimeException("加载浏览器出错");
    }
    bean.webView = webView;
    bean.showSourceMethod = showSourceMethod;
    bean.urlGressMsg = urlGressMsg;
    return bean;
    }

    private WebViewClient client = new WebViewClient() {

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String targetUrl) {
    view.loadUrl(targetUrl);
    return true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    String msg = getGress(dispUrl(url));
    if (!ToolUtil.get().isBlank(msg)) {
    gressDialog = ProgressDialog.show(webView.getContext(), "请稍等...", msg, true);
    gressDialog.setCanceledOnTouchOutside(true);
    }
    } @Override
    public void onPageFinished(WebView view, String url) {
    if (null != gressDialog) {
    gressDialog.dismiss();
    }
    gressDialog = null;
    if (!ToolUtil.get().isBlank(showSourceMethod)) {// 显示源码
    view.loadUrl("javascript:window." + showSourceMethod + "('<head>'+" +
                        "document.getElementsByTagName('html')[0].innerHTML+'</head>');");
    }
    } };

    private OnKeyListener keyListener = new OnKeyListener() {
    public boolean onKey(View view, int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
    if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
    webView.goBack();
    return true;
    }
    }
    return false;
    }
    };

    // 处理url,有问号就去掉
    private String dispUrl(String url) {
    return (!ToolUtil.get().isBlank(url) && url.indexOf("?") != -1 ? url.substring(0, url.indexOf("?")) : url);
    }

    // 根据url获得进度条提示语
    private String getGress(String url) {
    if (null == urlGressMsg) {return "";}
    String msg = (String) urlGressMsg.get(dispUrl(url));
    if (ToolUtil.get().isBlank(msg)) {
    for (Entry<String, Object> entry : urlGressMsg.entrySet()) {
    if (entry.getKey().indexOf(url) != -1 || url.indexOf(entry.getKey()) != -1) {
    msg = (String) entry.getValue();
    break;
    }
    }
    }
    return msg;
    } public WebViewClient getClient() {
    return client;
    } public OnKeyListener getKeyListener() {
    return keyListener;
    }}
    public class TestAct extends AbstractActivity {   private WebView webview;   @Override
       protected void onCreate(Bundle bundle) {
          super.onCreate(bundle);setContentView(R.layout.test);app().addActivity(this);
          int size = viewUtil.getChildHeight(800, 60);
    ((ImageView) findView(R.id.imgQQ)).setImageBitmap(imageUtil.reduce(resBitmap(R.drawable.qq), size, size, false));
    ((ImageView) findView(R.id.imgWB)).setImageBitmap(imageUtil.reduce(resBitmap(R.drawable.wb), size, size, false));
    webview = findView(R.id.wbvBrowser);
    Map<String, Object> gressMsg = toolUtil.createMap(new String[] { OtherUrls.QQ_LOGIN_URL, OtherUrls.SINA_LOGIN_URL, Config.TCK_URL + "/login/third.htm" }, 
    new Object[] { "正在加载QQ界面...", "正在加载新浪微博界面...", "正在登录淘材库服务器..." });
    BrowserUtil browser = BrowserUtil.get(webview, "otherLogin.showBrowserSource", gressMsg);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(browser.getClient());
    webview.setOnKeyListener(browser.getKeyListener());
    webview.addJavascriptInterface(this, "otherLogin");
       }   public void showBrowserSource(String html) {
    System.out.println(html);// 就这这里输出了网页的源码
    }}