首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Http POST和GET导航网站

使用Http POST和GET导航网站
EN

Stack Overflow用户
提问于 2015-11-01 21:11:43
回答 1查看 936关注 0票数 0

我希望我的android应用程序建立到网站的连接,并通过代码在后台导航网站。据我所知,第一步是获取我想要导航的站点的html源代码,我设法通过以下代码完成了:

代码语言:javascript
复制
public class HttpTest extends Activity {
private TextView tvCode;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.http_layout);  

    tvCode = (TextView)findViewById(R.id.tvHTMLCode);
    String s = null;
    try {
        GetHtmlSourceCode html = new GetHtmlSourceCode();
        html.execute("http://www.youtube.com");
        s = html.get();
    }
    catch (Exception e) {
        e.printStackTrace();
        tvCode.setText("Error");
    }
    if (s != null)
        tvCode.setText(s);

}

private class GetHtmlSourceCode extends AsyncTask<String, Integer, String> {
    @Override
    protected String doInBackground(String... params) {
        URL url = null;
        HttpURLConnection conn = null;
        String content = "";

        try {
            url = new URL(params[0]);
            conn = (HttpURLConnection)url.openConnection();
            InputStream in = conn.getInputStream();

            int data = in.read();
            while (data != -1) {
                char c = (char) data;
                data = in.read();
                content += c;
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
        finally {
            conn.disconnect();
            return content;
        }
    }
}

}

(Youtube仅用作示例)。

在从youtube.com获得源代码后,我希望我的应用程序在搜索框中输入一些内容,然后单击搜索按钮。

据我所知,我需要向youtube发送一个POST请求来填充搜索框,另一个POST来按下按钮,最后一个GET来获取包含搜索结果的页面的html源代码。然而,这些问题似乎已经被HttpClient和HttpPost类弃用了,我有限的英语词汇量和对这个主题的普遍了解使得我自己很难找到解决方案。

有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-01 21:54:18

尝试使用以下代码

代码语言:javascript
复制
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.os.AsyncTask;

public class Request extends AsyncTask<String, String, String>{

    private HttpClient httpclient = new DefaultHttpClient();
    private HttpResponse response;
    private String responseString ;
    @Override
    protected String doInBackground(String... uri) {


        StatusLine statusLine = response.getStatusLine();
        try {
            response = httpclient.execute(new HttpGet(uri[0]));
            statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                responseString = out.toString();
                out.close();
            } else{

                response.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
        } catch (ClientProtocolException e) {

        } catch (IOException e) {

        }
        return responseString;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        //TO Do
    }
}

要发出请求,请使用以下代码

代码语言:javascript
复制
new RequestTask().execute("http://yourwebsite.com"); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33462496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档