post請求方式和get請求方式等網絡請求方式總結
一,幾種請求方式的解析
第一種:get請求方式請求數據
向服務器發索取數據的一種請求,get是獲取信息,而不是修改信息,數據不會被修改,get請求的參數會跟在url(路徑)後進行傳遞,請求的數據會附在URL之後,以?分割URL和傳輸數據,參數之間以&相連。
String url="http://192.168.1.117:8080/web2/servlet/LoginServlet?name="+URLEncoder.encode(name)+"&pass="+pass;
get傳輸的數據有大小限制,因爲GET是通過url提交數據,不同的瀏覽器對URL的長度的限制是不同的。get請求的數據會被瀏覽器緩存起來,用戶名和密碼將明文出現在URL上,其他人可以查到歷史瀏覽記錄,數據不太安全。
第二種:post請求方式請求數據
向服務器提交數據的一種請求,post請求則作爲http消息的實際內容發送給web服務器,數據放置在HTMLHeader內提交,post沒有限制提交數據,post比get更安全。
String path = "http://192.168.1.117:8080/web2/servlet/LoginServlet";
String data="name="+URLEncoder.encode(name)+"&pass="+pass;
HttpClient框架已經將handler對象封裝好了,所以比get和post方式更方便
第三種:HttpClient框架請求數據
HttpClient框架把請求的方法封裝成了一個框架
與get和post請求類似:只是使用的對象不同,HttpClient直接把get請求和post請求的方法進行了封裝
HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(path);//get請求
HttpPost hp=new HttpPost(path);//post請求
第四種:異步HttpClient框架請求數據
異步HttpClient框架比HttpClient框架更簡單,他是藉助第三方工具jar包裏封裝好的對象和方法實現請求數據的
AsyncHttpClient ahc = new AsyncHttpClient();
ahc.get(url, new MyResponseHandler());
二,需要注意的事項
1,無論哪種請求方式都需要添加網絡權限
2,路徑的格式必須與服務器提供的完全保持一致,否則不能連接
3,如果字段名字寫錯會出現登陸失敗的情況
4,不要忘記把路徑傳參添加到請求方法中。否則請求不了
5,只要出現一點問題,都不會請求成功,所以一定要細心
6,get請求和post請求的方法get和post必須大寫
下面可以具體看一下源碼:
1,get請求方式請求數據:
public class MainActivity extends Activity {
Handler handler=new Handler(){
public void handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), (CharSequence) msg.obj, 0).show();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
EditText et_name=(EditText) findViewById(R.id.et_name);
EditText et_pass=(EditText) findViewById(R.id.et_pass);
final String name=et_name.getText().toString().trim();
final String pass=et_pass.getText().toString().trim();
new Thread(){
public void run() {
String path="http://192.168.1.117:8080/web2/servlet/LoginServlet?name="+URLEncoder.encode(name)+"&pass="+pass;
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(3000);
conn.setConnectTimeout(3000);
conn.connect();
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = new Message();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
2,post請求方式請求數據
public class MainActivity extends Activity {
Handler handler=new Handler(){
public void handleMessage(Message msg) {
Toast.makeText(MainActivity.this, (String) msg.obj, 0).show();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
EditText et_name=(EditText) findViewById(R.id.et_name);
EditText et_pass=(EditText) findViewById(R.id.et_pass);
final String name=et_name.getText().toString().trim();
final String pass=et_pass.getText().toString().trim();
new Thread(){
public void run() {
String path = "http://192.168.1.117:8080/web2/servlet/LoginServlet";
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setReadTimeout(3000);
conn.setConnectTimeout(3000);
String data="name="+URLEncoder.encode(name)+"&pass="+pass;
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", data.length()+"");
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());
conn.connect();
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = handler.obtainMessage();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
3,HttpClient框架請求數據
public class MainActivity extends Activity {
Handler handler=new Handler(){
public void handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), (CharSequence) msg.obj, 0).show();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
HttpClient框架get請求方式
public void get(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
new Thread(){
public void run() {
String path= "http://192.168.1.117:8080/web2/servlet/LoginServlet?name=" + URLEncoder.encode(name) + "&pass=" + pass;
HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(path);
try {
HttpResponse hr = hc.execute(hg);
StatusLine sl = hr.getStatusLine();
if(sl.getStatusCode() == 200){
HttpEntity he = hr.getEntity();
InputStream is = he.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = new Message().obtain();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
HttpClient框架post請求方式
public void post(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
new Thread(){
public void run() {
String path="http://192.168.1.117:8080/web2/servlet/LoginServlet";
HttpClient hc=new DefaultHttpClient();
//不要忘了把path傳入
HttpPost hp=new HttpPost(path);
BasicNameValuePair bnvp1=new BasicNameValuePair("name",name);
BasicNameValuePair bnvp2=new BasicNameValuePair("pass",pass);
List<BasicNameValuePair> parameters=new ArrayList<BasicNameValuePair>();
parameters.add(bnvp1);
parameters.add(bnvp2);
try {
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameters,"utf-8");
hp.setEntity(entity);
HttpResponse hr = hc.execute(hp);
if(hr.getStatusLine().getStatusCode()==200){
InputStream is = hr.getEntity().getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK")) ;
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = handler.obtainMessage();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
4,異步HttpClient框架請求數據
先導入第三方工具包至src文件夾中
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void get(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
String url = "http://192.168.1.117:8080/web2/servlet/LoginServlet?name=" + URLEncoder.encode(name) + "&pass=" + pass;
AsyncHttpClient ahc = new AsyncHttpClient();
ahc.get(url, new MyResponseHandler());
}
public void post(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
String url = "http://192.168.1.117:8080/web2/servlet/LoginServlet";
AsyncHttpClient ahc = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.add("name", name);
params.add("pass", pass);
ahc.post(url, params, new MyResponseHandler());
}
class MyResponseHandler extends AsyncHttpResponseHandler{
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
try {
Toast.makeText(MainActivity.this, new String(responseBody,"GBK"), 0).show();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
Toast.makeText(MainActivity.this, "請求失敗", 0).show();
}
}
}
第一種:get請求方式請求數據
向服務器發索取數據的一種請求,get是獲取信息,而不是修改信息,數據不會被修改,get請求的參數會跟在url(路徑)後進行傳遞,請求的數據會附在URL之後,以?分割URL和傳輸數據,參數之間以&相連。
String url="http://192.168.1.117:8080/web2/servlet/LoginServlet?name="+URLEncoder.encode(name)+"&pass="+pass;
get傳輸的數據有大小限制,因爲GET是通過url提交數據,不同的瀏覽器對URL的長度的限制是不同的。get請求的數據會被瀏覽器緩存起來,用戶名和密碼將明文出現在URL上,其他人可以查到歷史瀏覽記錄,數據不太安全。
第二種:post請求方式請求數據
向服務器提交數據的一種請求,post請求則作爲http消息的實際內容發送給web服務器,數據放置在HTMLHeader內提交,post沒有限制提交數據,post比get更安全。
String path = "http://192.168.1.117:8080/web2/servlet/LoginServlet";
String data="name="+URLEncoder.encode(name)+"&pass="+pass;
HttpClient框架已經將handler對象封裝好了,所以比get和post方式更方便
第三種:HttpClient框架請求數據
HttpClient框架把請求的方法封裝成了一個框架
與get和post請求類似:只是使用的對象不同,HttpClient直接把get請求和post請求的方法進行了封裝
HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(path);//get請求
HttpPost hp=new HttpPost(path);//post請求
第四種:異步HttpClient框架請求數據
異步HttpClient框架比HttpClient框架更簡單,他是藉助第三方工具jar包裏封裝好的對象和方法實現請求數據的
AsyncHttpClient ahc = new AsyncHttpClient();
ahc.get(url, new MyResponseHandler());
二,需要注意的事項
1,無論哪種請求方式都需要添加網絡權限
2,路徑的格式必須與服務器提供的完全保持一致,否則不能連接
3,如果字段名字寫錯會出現登陸失敗的情況
4,不要忘記把路徑傳參添加到請求方法中。否則請求不了
5,只要出現一點問題,都不會請求成功,所以一定要細心
6,get請求和post請求的方法get和post必須大寫
下面可以具體看一下源碼:
1,get請求方式請求數據:
public class MainActivity extends Activity {
Handler handler=new Handler(){
public void handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), (CharSequence) msg.obj, 0).show();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
EditText et_name=(EditText) findViewById(R.id.et_name);
EditText et_pass=(EditText) findViewById(R.id.et_pass);
final String name=et_name.getText().toString().trim();
final String pass=et_pass.getText().toString().trim();
new Thread(){
public void run() {
String path="http://192.168.1.117:8080/web2/servlet/LoginServlet?name="+URLEncoder.encode(name)+"&pass="+pass;
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(3000);
conn.setConnectTimeout(3000);
conn.connect();
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = new Message();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
2,post請求方式請求數據
public class MainActivity extends Activity {
Handler handler=new Handler(){
public void handleMessage(Message msg) {
Toast.makeText(MainActivity.this, (String) msg.obj, 0).show();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
EditText et_name=(EditText) findViewById(R.id.et_name);
EditText et_pass=(EditText) findViewById(R.id.et_pass);
final String name=et_name.getText().toString().trim();
final String pass=et_pass.getText().toString().trim();
new Thread(){
public void run() {
String path = "http://192.168.1.117:8080/web2/servlet/LoginServlet";
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setReadTimeout(3000);
conn.setConnectTimeout(3000);
String data="name="+URLEncoder.encode(name)+"&pass="+pass;
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", data.length()+"");
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());
conn.connect();
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = handler.obtainMessage();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
3,HttpClient框架請求數據
public class MainActivity extends Activity {
Handler handler=new Handler(){
public void handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), (CharSequence) msg.obj, 0).show();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
HttpClient框架get請求方式
public void get(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
new Thread(){
public void run() {
String path= "http://192.168.1.117:8080/web2/servlet/LoginServlet?name=" + URLEncoder.encode(name) + "&pass=" + pass;
HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(path);
try {
HttpResponse hr = hc.execute(hg);
StatusLine sl = hr.getStatusLine();
if(sl.getStatusCode() == 200){
HttpEntity he = hr.getEntity();
InputStream is = he.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = new Message().obtain();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
HttpClient框架post請求方式
public void post(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
new Thread(){
public void run() {
String path="http://192.168.1.117:8080/web2/servlet/LoginServlet";
HttpClient hc=new DefaultHttpClient();
//不要忘了把path傳入
HttpPost hp=new HttpPost(path);
BasicNameValuePair bnvp1=new BasicNameValuePair("name",name);
BasicNameValuePair bnvp2=new BasicNameValuePair("pass",pass);
List<BasicNameValuePair> parameters=new ArrayList<BasicNameValuePair>();
parameters.add(bnvp1);
parameters.add(bnvp2);
try {
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameters,"utf-8");
hp.setEntity(entity);
HttpResponse hr = hc.execute(hp);
if(hr.getStatusLine().getStatusCode()==200){
InputStream is = hr.getEntity().getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK")) ;
StringBuffer buffer = new StringBuffer();
String line="";
while((line=in.readLine())!=null){
buffer.append(line);
}
String text=buffer.toString();
Message msg = handler.obtainMessage();
msg.obj=text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
4,異步HttpClient框架請求數據
先導入第三方工具包至src文件夾中
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void get(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
String url = "http://192.168.1.117:8080/web2/servlet/LoginServlet?name=" + URLEncoder.encode(name) + "&pass=" + pass;
AsyncHttpClient ahc = new AsyncHttpClient();
ahc.get(url, new MyResponseHandler());
}
public void post(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString();
String url = "http://192.168.1.117:8080/web2/servlet/LoginServlet";
AsyncHttpClient ahc = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.add("name", name);
params.add("pass", pass);
ahc.post(url, params, new MyResponseHandler());
}
class MyResponseHandler extends AsyncHttpResponseHandler{
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
try {
Toast.makeText(MainActivity.this, new String(responseBody,"GBK"), 0).show();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
Toast.makeText(MainActivity.this, "請求失敗", 0).show();
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.