今天周日,上次在学习http网络请求的时候,在网上看到的基本上有的已经不可行,而且也多、杂,因此抽出时间来对这些请求进行一下汇总,方便自己以后调用,也分享给大家,共同进步。
通常,我们的http请求有以下几种:
1、HttpURLConnection
2、URLConnection
3、HttpClient
4、Jsoup(第三方请求架包) 架包下载地址:jsoup-1.8.3.jar
下面分别来讲下以上这些请求方法:
(GET部分)
HttpURLConnection:
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection urlConnection = null;
try {
URL url = new URL("http://www.baidu.com/");
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(
urlConnection.getInputStream());
Scanner scanner = new Scanner(in).useDelimiter("\\A");
String result = scanner.hasNext() ? scanner.next() : "";
System.out.println(result);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
}
}).start();
}
}
运行截图:
URLConnection:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
String result = "";
BufferedReader in = null;
try {
String urlNameString = "http://www.baidu.com";
URL realUrl = new URL(urlNameString);
URLConnection connection = realUrl.openConnection();
connection.connect();
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
Log.e("result", result);
}
}).start();
}
}
运行截图:
HttpClient:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
String result = null;
BufferedReader reader = null;
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI("http://www.sina.com.cn"));
HttpResponse response = client.execute(request);
reader = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
StringBuffer strBuffer = new StringBuffer("");
String line = null;
while ((line = reader.readLine()) != null) {
strBuffer.append(line);
}
result = strBuffer.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
reader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
Log.e("result", result);
}
}).start();
}
}
运行截图:
Jsoup:
import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一种
new Thread(new Runnable() {
@Override
public void run() {
Document document;
try {
document = Jsoup.connect("http://www.tuicool.com").get();
Log.e("result", document.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
//第二种
new Thread(new Runnable() {
@Override
public void run() {
try {
Connection.Response response = Jsoup
.connect("http://www.oschina.net").timeout(5000)
.method(Method.GET).execute();
Log.e("result", response.body());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
运行截图:
(POST部分)
HttpURLConnection:
<span style="color:#000099;">import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection urlConnection = null;
try {
URL url = new URL("http://www.baidu.com/");
urlConnection = (HttpURLConnection) url.openConnection();
</span><span style="color:#ff0000;">urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");</span><span style="color:#000099;">
InputStream in = new BufferedInputStream(
urlConnection.getInputStream());
Scanner scanner = new Scanner(in).useDelimiter("\\A");
String result = scanner.hasNext() ? scanner.next() : "";
System.out.println(result);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
}
}).start();
}
}</span>
URLConnection:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
String result = "";
BufferedReader in = null;
PrintWriter out = null;
try {
String urlNameString = "http://www.baidu.com";
URL realUrl = new URL(urlNameString);
URLConnection connection = realUrl.openConnection();
connection.connect();
connection.setDoInput(true);
connection.setDoOutput(true);
out = new PrintWriter(connection.getOutputStream());
out.print("");// 发送请求参数
out.flush();
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += "/n" + line;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
Log.e("result", result);
}
}).start();
}
}
HttpClient:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
String result = "null";
HttpPost httpPost = new HttpPost(
"http://wthrcdn.etouch.cn/weather_mini");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("citykey", "101010100"));
try {
HttpEntity httpEntity = new UrlEncodedFormEntity(params,
"utf-8");
httpPost.setEntity(httpEntity);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = EntityUtils.toString(httpResponse.getEntity());
Log.e("result", result);
} else {
Log.e("result", "请求错误");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.e("result", result);
}
}).start();
}
}
Jsoup:
import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 第一种
new Thread(new Runnable() {
@Override
public void run() {
Document document;
try {
document = Jsoup.connect("http://www.tuicool.com")
.data(arg0).post();
Log.e("result", document.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
// 第二种
new Thread(new Runnable() {
@Override
public void run() {
try {
Connection.Response response = Jsoup
.connect("http://www.oschina.net").timeout(5000)
.data(arg0).method(Method.POST).execute();
Log.e("result", response.body());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
好了,基本上就是这些,如有不足之处望指正。