httppost

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class TestHttpPost {

public static void main(String[] args) throws IOException {
//創建URL對象
URL url = new URL("http://127.0.0.1:8080/student/login.php");
//通過URL對象獲取一個HttpURLConnection對象
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");//設置請求方式爲POST
conn.setDoOutput(true);//設置允許輸出數據到服務器
//設置請求頭信息
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
//獲取輸出流 通過輸出流將POST請求提交的數據發送到服務器端
String data = "username=admin&password=admin";
//獲取輸出流對象 通過輸出流將數據輸出到服務器端
OutputStream out = conn.getOutputStream();
out.write(data.getBytes());//數據寫出 輸出數據的操作 必須放置在讀取數據前
//獲取輸入流 通過該流可以獲取服務器端響應信息
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//判斷響應狀態碼 
if(conn.getResponseCode() == 200){
System.out.println("服務器請求處理成功,返回的響應:");
String msg = null;
while((msg=reader.readLine())!=null){
System.out.println(msg);
}
}
//斷開連接
conn.disconnect();

}


}

##################################################

  1. import java.io.BufferedReader;  
  2. import java.io.InputStreamReader;  
  3. import java.io.OutputStream;  
  4. import java.net.HttpURLConnection;  
  5. import java.net.URL;  
  6. import java.net.URLEncoder;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.os.Handler;  
  11. import android.os.Message;  
  12. import android.view.View;  
  13. import android.view.View.OnClickListener;  
  14. import android.widget.Button;  
  15. import android.widget.EditText;  
  16. import android.widget.Toast;  
  17.   
  18. public class MainActivity extends Activity {  
  19.     private EditText et_username;  
  20.     private EditText et_password;  
  21.       
  22.     private Button bt_show;  
  23.       
  24.     String result="";  
  25.       
  26.     /**post請求URL地址*/  
  27.     private static final String URL="";  
  28.   
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.activity_main);  
  33.           
  34.         init();  
  35.           
  36.         bt_show.setOnClickListener(new OnClickListener() {  
  37.               
  38.             @Override  
  39.             public void onClick(View arg0) {  
  40.                 //android4.0後的新的特性,網絡數據請求時不能放在主線程中。  
  41.                 //9、使用線程執行訪問服務器,獲取返回信息後通知主線程更新UI或者提示信息。  
  42.                 final Handler handler = new Handler() {  
  43.                     @Override    
  44.                     public void handleMessage(Message msg) {    
  45.                         if (msg.what == 1) {  
  46.                             //8、提示讀取結果  
  47.                             Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();  
  48.                         }    
  49.                     }    
  50.                 };  
  51.                 // 啓動線程來執行任務    
  52.                 new Thread() {    
  53.                     public void run() {  
  54.                         //請求網絡  
  55.                         loginByPost(et_username.getText().toString(), et_password.getText().toString());   
  56.                         Message m = new Message();    
  57.                         m.what = 1;    
  58.                         // 發送消息到Handler    
  59.                         handler.sendMessage(m);    
  60.                     }    
  61.                 }.start();  
  62.                   
  63.             }  
  64.         });  
  65.           
  66.     }  
  67.       
  68.     private void init(){  
  69.         et_username=(EditText)findViewById(R.id.et_username);  
  70.         et_password=(EditText)findViewById(R.id.et_password);  
  71.         bt_show=(Button)findViewById(R.id.bt_login);  
  72.     }  
  73.       
  74.     /** 
  75.      * 請求後臺,判斷登錄結果。 
  76.      * @param username 
  77.      * @param password 
  78.      */  
  79.     public void loginByPost(String username, String password) {    
  80.         try {   
  81.             //1、根據地址創建URL對象(網絡訪問的url)    
  82.             URL url = new URL(URL);    
  83.             //2、url.openConnection()打開網絡鏈接    
  84.             HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
  85.             //3、設置請求的方式    
  86.             conn.setRequestMethod("POST");   
  87.             conn.setDoInput(true);//發送POST請求必須設置允許輸出  
  88.             conn.setDoOutput(true);//發送POST請求必須設置允許輸入  
  89.             //4、設置請求的頭  
  90.             conn.setRequestProperty("Content-Type""application/x-www-form-urlencoded");  
  91.             conn.setRequestProperty("Charset""utf-8");  
  92.             String data = "username=" + URLEncoder.encode(username, "UTF-8")    
  93.                     + "&password=" + URLEncoder.encode(password, "UTF-8");//傳遞的數據  
  94.             conn.setRequestProperty("Content-Length",String.valueOf(data.getBytes().length));   
  95.             //5、獲取輸出流   
  96.             OutputStream os = conn.getOutputStream();    
  97.             os.write(data.getBytes());    
  98.             os.flush();   
  99.               
  100.               
  101.             //6、獲取響應的輸入流對象  
  102.             InputStreamReader is = new InputStreamReader(conn.getInputStream());  
  103.             BufferedReader bufferedReader = new BufferedReader(is);  
  104.             StringBuffer strBuffer = new StringBuffer();  
  105.             String line = null;  
  106.             //7、讀取服務器返回信息  
  107.             while ((line = bufferedReader.readLine()) != null) {  
  108.                 strBuffer.append(line);  
  109.             }  
  110.             result = strBuffer.toString();  
  111.   
  112.             //8、關閉InputStream、關閉http連接  
  113.             is.close();  
  114.             conn.disconnect();  
  115.               
  116.         } catch (Exception e) {    
  117.             e.printStackTrace();    
  118.         }    
  119.     }  
  120.       
  121. }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章