Android 保存一个站点';将HTML代码转换为字符串

Android 保存一个站点';将HTML代码转换为字符串,android,html,parsing,android-asynctask,Android,Html,Parsing,Android Asynctask,所以我一直在尝试将一个网站的代码(这个网站只包含html/php)保存到android中的字符串中 现在,我尝试了ASyncTask,但无法使其工作。我看了整部纪录片 我必须承认,我是Android的新手。 然而,出于某种原因,我所尝试的一切要么使它崩溃,要么不起作用 现在,我问你一个简单的例子,如何获取网站的代码,并将其设置为字符串 提前感谢 编辑: MainTabView.java package com.example.projectnova; import java.net.URL;

所以我一直在尝试将一个网站的代码(这个网站只包含html/php)保存到android中的字符串中

现在,我尝试了ASyncTask,但无法使其工作。我看了整部纪录片

我必须承认,我是Android的新手。 然而,出于某种原因,我所尝试的一切要么使它崩溃,要么不起作用

现在,我问你一个简单的例子,如何获取网站的代码,并将其设置为字符串

提前感谢

编辑:

MainTabView.java

package com.example.projectnova;


import java.net.URL;

import com.example.projectnova.R.string;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.Toast;
import android.widget.TabHost.TabSpec;

public class MainTabView extends Activity implements OnClickListener{

    TabHost th;
    TabSpec specs;
    Button search;
    EditText searchText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_tab_view);

        search = (Button)findViewById(R.id.searchButton);
        searchText = (EditText)findViewById(R.id.searchInputText);
        th = (TabHost)findViewById(R.id.tabhost);
        search.setOnClickListener(this);


         th.setup();

            specs = th.newTabSpec("tag1");
            specs.setContent(R.id.Search);

            specs.setIndicator("Search");
            th.addTab(specs);

            specs = th.newTabSpec("tag2");
            specs.setContent(R.id.Download);
            specs.setIndicator("Downloads");
            th.addTab(specs);


          /*
           * 
           * Example in (I believe)PHP 
           * 
            function streaminfo($file,$port) { 
            global $src;
            $fp = @fsockopen ($file, $port, &$errno, &$errstr, 5);
            if (!$fp) {
            echo "Could not connect to <b>{$file}:{$port}</b> ({$errno}) - {$errstr}\n";
            } else {
            fputs ($fp, "GET /7 HTTP/1.1\r\nUser-Agent:Mozilla\r\n\r\n");
            while (!feof($fp)) {
            $stream = fgets($fp,1024);
            }
            list(,$stream) = explode("<body>",$stream);
            list($stream) = explode("</body>",$stream);
            list($user, $status, $user_peak, $user_max,$filler ,$bitrate, $song) = explode(",",$stream);
            if($status== 0 ) {
            } else {
            $arr = array('nameofsong' => $song);
            echo json_encode($arr);
            }
            fclose($fp);
            }
            }
            streaminfo("188.138.79.175",8030);
          */
    }
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        switch(arg0.getId()){
        case R.id.searchButton:
            int i = searchText.getText().toString().length();

            if(i == 0){
                Context context = getApplicationContext();
                CharSequence text =("The search box is empty");
                int duration = Toast.LENGTH_SHORT;

                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }
            else{

                String s = searchText.getText().toString();
                String htmlText = s.replace(" ","_"); // Works
                String link = "WebsiteUrl.com/" + htmlText + ".html"; //Works
                // searchText.setText(link); Test Purposes
            }

        }
    }

    private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
         protected Long doInBackground(URL... urls) {
             int count = urls.length;
             long totalSize = 0;
             for (int i = 0; i < count; i++) {
                 totalSize += Downloader.downloadFile(urls[i]);
                 publishProgress((int) ((i / (float) count) * 100));
                 // Escape early if cancel() is called
                 if (isCancelled()) break;
             }
             return totalSize;
         }

         protected void onProgressUpdate(Integer... progress) {
             setProgressPercent(progress[0]);
         }

         protected void onPostExecute(Long result) {
             showDialog("Downloaded " + result + " bytes");
         }
     }
}
package com.example.projectnova;
导入java.net.URL;
导入com.example.projectnova.R.string;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.app.Activity;
导入android.content.Context;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TabHost;
导入android.widget.Toast;
导入android.widget.TabHost.TabSpec;
公共类MainTabView扩展活动实现OnClickListener{
烟草;
TabSpec规范;
按钮搜索;
编辑文本搜索文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u main\u tab\u视图);
search=(按钮)findviewbyd(R.id.searchButton);
searchText=(EditText)findViewById(R.id.searchInputText);
th=(TabHost)findviewbyd(R.id.TabHost);
search.setOnClickListener(this);
th.setup();
规范=新规范(“tag1”);
规格设置内容(R.id.Search);
规格设置指示器(“搜索”);
th.addTab(规格);
规范=新规范(“tag2”);
规格设置内容(R.id.Download);
规格设置指示器(“下载”);
th.addTab(规格);
/*
* 
*(我相信)PHP中的示例
* 
函数streaminfo($file,$port){
全球$src;
$fp=@fsockopen($file,$port,&$errno,&$errstr,5);
如果(!$fp){
echo“无法连接到{$file}:{$port}({$errno})-{$errstr}\n”;
}否则{
fputs($fp,“GET/7http/1.1\r\n用户代理:Mozilla\r\n\r\n”);
而(!feof($fp)){
$stream=fgets($fp,1024);
}
列表(,$stream)=分解(“,$stream”);
列表($stream)=分解(“,$stream);
列表($user、$status、$user_peak、$user_max、$filler、$bitrate、$song)=分解(“,”,$stream);
如果($status==0){
}否则{
$arr=array('nameofsong'=>$song);
echo json_编码($arr);
}
fclose($fp);
}
}
streaminfo(“188.138.79.175”,8030);
*/
}
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
开关(arg0.getId()){
案例R.id.searchButton:
int i=searchText.getText().toString().length();
如果(i==0){
Context=getApplicationContext();
CharSequence text=(“搜索框为空”);
int duration=Toast.LENGTH\u SHORT;
Toast Toast=Toast.makeText(上下文、文本、持续时间);
toast.show();
}
否则{
字符串s=searchText.getText().toString();
字符串htmlText=s.replace(“,“”);//有效
String link=“WebsiteUrl.com/”+htmlText+“.html”;//有效
//searchText.setText(链接);测试目的
}
}
}
私有类DownloadFilesTask扩展了AsyncTask{
受保护的长doInBackground(URL…URL){
int count=url.length;
长totalSize=0;
for(int i=0;i
我能问一下您为什么需要这样做吗

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);

String html = "";
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
    str.append(line);
}
in.close();
html = str.toString();

这里我们不提供完整的问题示例,但是如果您展示了您尝试过的代码,我们可以指出哪里出了问题,这样我们就可以修复it@RGrahamAlrigh,给我一点时间编辑。@Paramone在你的代码中你从不调用DownloadFilesTask,我认为这就是问题所在,因为它将尝试从主线程访问网络。o不是Android上的一种模式,可以在后台使用AsyncTask或其他东西进行下载?来自OP:“现在,我尝试了AsyncTask,但无法使其工作”。因此,如果他不能让它工作,这个答案将不会有帮助