我希望我的android应用程序建立到网站的连接,并通过代码在后台导航网站。据我所知,第一步是获取我想要导航的站点的html源代码,我设法通过以下代码完成了:
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类弃用了,我有限的英语词汇量和对这个主题的普遍了解使得我自己很难找到解决方案。
有人能帮帮忙吗?
发布于 2015-11-01 21:54:18
尝试使用以下代码
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
}
}要发出请求,请使用以下代码
new RequestTask().execute("http://yourwebsite.com"); https://stackoverflow.com/questions/33462496
复制相似问题